计算机中的原码,计算机中的原码反码补码移码

计算机中的原码反码补码移码

原码

数值 X 的原码记为 [X]原,如果机器字长为 n (即采用 n 个二进制位表示数据),则最高位是符号位,0 表示正号,1 表示负号,基余的 n~1 位表示数值的绝对值。数值零的原码表示有两种形式:[+0]原=00000000,[-0]原=10000000。

例:

[+4]原 = 00000100

[-4]原 = 10000100

[+127]原 = 01111111

[-127]原 = 11111111

反码

数值 X 的反码记作 [X]反,如果机器字长为 n,则最高位是符号位,0 表示正号,1 表示负号,正数的反码与原码相同,负数的反码则是其绝对值按位求反。数值0的反码表示有两种形式:[+0]反=00000000,[-0]反=11111111。

例:

[+4]反 = 00000100

[-4]反 = 11111011

[+127]反 = 01111111

[-127]反 = 10000000

补码

数值 X 的补码记作 [X]补,如果机器字长为 n,则最高为符号位,0 表示正号,1 表示负号,正数的补码与其原码和反码相同,负数的补码则等于其反码的末尾加 1。在补码表示中,0 有唯一的编码:[+0]补=00000000, [-0]补=00000000。

例:

[+4]补 = 00000100

[-4]补 = 11111100

[+127]补 = 01111111

[-127]补 = 10000001

移码

在数 X 上增加一个偏移量来定义的,常用于表示浮点数中的阶码。如果机器字长为 n,在偏移2^(n-1)的情况下,只要将补码的符号位取反便可获相应的移码。

例:

[+0]移 = 10000000

[-0]移 = 10000000

[+4]移 = 10000100

[-4]移 = 01111100

[+127]移 = 11111111

[-127]移 = 00000001

总结:原码、反码、补码中最高位 0 表示正数,1 表示负数。负数的反码规则是符号位不变,绝对值位按位取反。负数的补码规则是符号位不变,绝对值位按位取反然后再加1。

你可能感兴趣的:(计算机中的原码)