补码的应用
计算机中数据都是以补码形式存在
正数 原码 反码 补码相同
负数 反码:原码的符号位不变,其它位取反。 补码:反码+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)

浙公网安备 33010602011771号