备考预习笔记(原码、反码、补码、移码)

2021-02-04  本文已影响0人  kevin5979

原码

原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值

[+1]原 = 0000 0001
[-1]原 = 1000 0001 

因为第一位是符号位, 所以8位二进制数原码的取值范围 -(2^(n-1)-1)~2^(n-1)-1 => [-127, 127]

[1111 1111 , 0111 1111] --> [-127 , 127]

反码

[+1] = [0000 0001]原 = [0000 0001]反
[-1] = [1000 0001]原 = [1111 1110]反

因为第一位是符号位, 所以8位二进制数反码的取值范围 -(2^(n-1)-1)~2^(n-1)-1 => [-127, 127]

[1000 0000 , 0000 0000] --> [-127 , 127]

补码

[+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
[-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补

补码的取值范围 -2^(n-1)~2^(n-1)-1 => [-128, 127]


移码

[+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补 = [1000 0001]移
[-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补 = [0111 1111]移

移码的取值范围 -2^(n-1)~2^(n-1)-1 => [-128, 127]


疑问:为什么原码、反码和补码的取值范围不一样?
[+0] = [0000 0000]原 = [0000 0000]反 = [0000 0000]补
[-0] = [1000 0000]原 = [1111 1111]反 = [0000 0000]补
[+0]原 != [-0]原
[+0]反 != [-0]反
[+0]移 == [-0]移
END
上一篇下一篇

猜你喜欢

热点阅读