作者look1214 (Swatch)
看板C_and_CPP
標題[問題] 二補數溢位如何解決?
時間Tue Nov 5 18:44:24 2019
剛剛突然想到
假設今天用4個bits的二補數表示來做7+7
0111+0111=1110
出來的值為-2
這要怎麼解決?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.82.186.130 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1572950666.A.D42.html
1F:→ nh60211as: 這不是正常的行為嗎?怎麼解析那個4bit的數是寫程式的 11/05 19:31
2F:→ nh60211as: 人的工作 11/05 19:31
3F:推 tw4563335: 你可以改用8個bits做啊 11/05 19:54
4F:推 chuegou: 你的ALU沒有溢位或進位旗標嗎 11/05 20:32
5F:推 Schottky: 你的意思是你要寫大數運算,在問 C 該如何做進位嗎? 11/05 21:11
6F:→ Schottky: 因為在組合語言的層面會有旗標告訴你該進位了 11/05 21:11
7F:→ sarafciel: 4bit二補數能表達的範圍就是+7~-8呀 11/06 10:57
8F:→ sarafciel: 比起要怎麼解決 有什麼原因要加兩個極限數值才是問題吧 11/06 10:59
9F:推 MartinJ40: 換一台電腦就好了 11/06 14:06
10F:→ Schottky: 那如果 int128 也溢位還能換什麼電腦? XD 11/06 22:15
11F:推 iaminanl: 用struct寫ㄅ,何苦為難3個bit 11/07 06:32
12F:推 ofd168: 如果是硬體,實務上是,兩個4個bits相加會變成5個bits,然 11/11 09:00
13F:→ ofd168: 後透過saturate砍回4個bits,這樣可以保證不會overflow 11/11 09:00