原码,反码,补码

来源:互联网 发布:淘宝闲鱼拍卖 编辑:程序博客网 时间:2024/06/04 23:18

今天突然发现自己对于负数的二进制的表示有点迷糊,吓得赶紧查了查资料,简单整理如下几点:

一,对与有符号的数而言

1,二进制的最高位是符号位:0表示正数,1表示负数,其余的位代表数值位,表示具体的二进制数值

2,正数的原码,反码,补码都一样;

3,负数的反码 = 它的原码符号位不变,其他位取反(0->1,1->0);

4,负数的补码 = 它的反码 + 1;

5,在计算机运算时,都是以补码的方式来运算的;

6,大多数数字都是默认有符号的。

二,对于无符号的数而言

与有符号数的最大区别在于:二进制的最高位不是符号位,不再表示数的正负性,其二进制数全部表示具体的数。


例子: 计算1 + (-2)的值。(默认为有符号的,在32位机下)

(1)1的补码为就是其原码:0000 0000 0000 0001

(2)-2的补码 = 它的原码的反码+1

-2的原码:1000 0000 0000 0010

-2的反码:1111 1111 1111 1101

-2的补码:1111 1111 1111 1110

(3)1 + (-2) =

     0000 0000 0000 0001

 + 1111 1111 1111 1110

=  1111 1111 1111 1111

设1 + (-2)的结果值为X。,则上式是X的二进制补码。

(4)X的首位是1,表示这是X是一个负数,补码不等于原码,需要从补码反求其原码

  X的补码减一得X的反码:1111 1111 1111 1110

  X的反码求反得X的原码:1000 0000 0000 0001

  由此可以得出X的值为:-1,与1 + (-2) =(-1)的值相等。

2 0
原创粉丝点击