我需要用 12 位无符号数做一些加/减。
对于无符号 12 位整数:
x = 0111 1000 0101, x = 1925
y = 1011 1100 0100, y = 3012
z = x+y = ?
z = x-y = ?
我得到了 x + y 的 0011 0100 1001
但是我应该为 x - y 做什么?
答案是否定的,它不作为无符号整数存在。
您需要转换为二进制补码形式,然后添加。
x - y = x + y'
y'
的补码在哪里y
。
用二进制补码求反的一个简单技巧是从右到左写你的数字。你基本上复制了这个数字。写下所有的零,直到遇到 1,然后也写下 1。然后翻转所有剩余的数字。
例如否定0110 1000
:
0110 1000
---------
000 copy zeros until first 1
1000 copy the 1
1001 1000 flip all remaining bits