补码的应用

计算机中数据都是以补码形式存在

正数 原码 反码 补码相同

负数 反码:原码的符号位不变,其它位取反。 补码:反码+1

以一字节为例:如3的原码反码补码都是00000011

如-3的原码:10000011,反码:11111100 补码:11111101

-------------------------------------------------------------------------------

特殊的用法

1. 字节对齐

length以8为对齐点

LEN = (length + 8 -1) & (^8)

 

2. set tebie的位B(B = 2^n)

这个比较简单 result = value | B

 

2. clear特别的位B(B = 2^n)

(-1)补码=11111111

result = value & [(-1)^B]

如 B = 4 (00000100)

[(-1)^B] = 11111111 ^ 00000100 = 11111011  我们要的就是这个结果:clearB对应的bit位(而不管它原来的值是0 or 1)

 

posted @ 2015-12-30 10:36  牧 天  阅读(278)  评论(0)    收藏  举报