作者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/cn.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