原码与反码补码总结

正数没有什么好说的,原码反码补码皆是一样的;

对于负数,要注意了:
只要是从补码推原码,一律是取反加一,例如下面一个例子:

补码—————————————————————-> 原码
1111 1111 1000 0001(-1)

下面以八位二进制进行举例:
补码—————————————————————-> 原码
0000 0000 0000 0000
0000 0001 0000 0001
……
0111 1111 127
1000 0000 -128
10000 0001 -127
……
1111 1111 -1

小结:有符号位八位二进制数值范围:-128~127(负数与非负数的个数一样:-128,-127,…-1共计128个负数,0,1,2,3,4…127共计128个非负数)

补码推导原码:
注意 :在OD中,寄存器中的值一般都是以补码形式出现的.!!!!!
1111 1111 取反为0000 0000
再加1,为00000001,由于它是一个负数
所以原码为1000 0001(-1)

小结:补推原:取反加1,添加符号位

原码推导补码 :
与补码推导原码有一点不同,
保持符号位不变,然后再取反加一
例子:已知10000001(-1)求其补码 (加1)
1000 0001(保持符号位不变,取反)——–>1111 1110————–>1111 1111(-1的补码)

这里需要注意的是:如果将1000 0001看成补码的话,那么进行上面的”补推原”操作,
将会得到0111 1111(127)—–>(添加符号位)1111 1111(-127)
也就是说补码位1000 0001的原码为-127
小结:原推补,保持符号位不变, 取反加1,

这里写图片描述
二进制与十六进制之间的转换:
二进制 十六进制
0000———->0
0001———–>1

0010————>2
0011————>3

0100————>4
0101————>5

0110————>6
0111————>7

1000————->8
10001———–>9

101 0————>A
101 1————>B

110 0————>C
110 1————->D

111 0———–>E
111 1————>F

猜你喜欢

转载自blog.csdn.net/richard1230/article/details/80754236