您当前的位置:首页 > 计算机 > 编程开发 > Other

原码、反码、补码,以及负数的位操作

时间:03-25来源:作者:点击数:

1、

原码:将符号位数码化了的数,其中“+”用0表示,“-”用1表示。

反码:正数的反码表示与原码表示一样;负数的反码表示是原码表示的符号位不变,数值位逐位取反。

补码:正数的补码表示与原码表示一样;负数的补码表示是原码表示的符号位不变,数值位逐位取反后最低位加1(反码表示最低位加1)。

例:(假如以八位二进制表示)

[+63] 原=0011 1111 反=0011 1111 补=0011 1111

[-63] 原=1011 1111 反=1100 0000 补=1100 0001

2、负数的位操作(以与为例)

(1)计算机中,无论正数还是负数,都是以其补码形式存储的;

(2)如果位操作后的结果最高位为“1”,说明它是负数的补码,转化为实际的整数时要逆操作,即-1(减一)后保持最高位不变再取反。

(3)一个数(如b)的相反数(-b)的补码,等于该数的补码取反,然后加1。

比如:

-5 原码=1000 0101 反码=1111 1010 补码=1111 1011

5 原码=0000 0101 反码=0000 0101 补码=0000 0101

可以进一步发现,-5 & 5 = 0000 0001,同理 -6 & 6 = 0000 0010,-7 & 7 =0000 0001……

这是一个很有用的性质,即返回(某个数的绝对值,如-6的绝对值是6)的(二进制表示的,6的二进制表示是0000 0110)从右往左第一个为1(第一位为1)的所表示的整数(0000 0010)。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门