我需要用12位无符号数做一些add / sub。
对于无符号的12位整数:
x = 0111 1000 0101, x = 1925
y = 1011 1100 0100, y = 3012
z = x+y = ?
z = x-y = ?
我得到了01 0100 1001 for x + y
但我该怎么办x-y?
答案是否定的,它不作为unsigned int存在。
答案 0 :(得分:0)
您需要转换为two's complement表单,然后添加。
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