有符号的二进制表示及转换

有符号的二进制表示:

补充:

在计算机中,负数以其正值的补码形式表达
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
反码:将二进制数按位取反(0变1,1变0),所得的新二进制数称为原二进制数的反码。
补码:反码加1称为补码。

最左边的看作符号位,为1表示负数,为0表示非负数

(即 有符号的二进制表示较无符号的少了1/2(这里指非负数和负数要各占一半),这就能解释为何
int型取值范围为:-2^31 ~ 2^31-1,而unsigned int(无符号整数型)取值范围为:2^32)

正变负 :各个位数取反再加一

负变正 :各个位数减一再取反(等同于取反再加一)

例:(众所周知,一个整数占四个字节,即四个8比特位)

因此,整数在计算机眼中应该是这样的:

二进制

十进制

00000000 00000000 00000000 00000010

 2

00000000 00000000 00000000 00000011

 3

00000000 00000000 00000000 00000111

 7

00000000 00000000 00000000 00001010

10

二进制

十进制

11111111 11111111 11111111 11111110(11111111 11111111 11111111 11111101+1)

- 2

11111111 11111111 11111111 11111101(11111111 11111111 11111111 11111100+1)

- 3

11111111 11111111 11111111 11111001(11111111 11111111 11111111 11111000+1)

- 7

11111111 11111111 11111111 11110110(11111111 11111111 11111111 11110101+1)

-10

互为相反数的整数的二进制表示形式相加等于零吗?

是的。实际上,二进制中只有0和1的形式,即其表示数只有0,1,-1,相加实质为零

例 : 2 : 00000000 00000000 00000000 00000010   

      -2 : 11111111 11111111 11111111 11111110  相加为1 00000000 00000000 00000000 00000000(1舍掉)

补充思考 : 在有符号整数的二进制表示中,首位即为符号位,而最高的表示数为 2^31-1(01111111 11111111 11111111 11111111),因此正数符号位为0(包含0(00000000 00000000 00000000 00000000));

而负数二进制为正数补码(正数取反加一),因此符号位为1;

而所能表示数中负数与非负数各占一半,对应的就是首位取0取1的问题


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部