数据表示:原码、反码、补码和移码与定点数和浮点数

前置知识

各种数值在计算机中以二进制计数制,称为机器数。机器数有无符号数和带符号数之分,无符号数无符号位,代表正数。带符号数的最高位表示正负,其余位表示数值。带符号的机器数具有原码、反码、补码和移码等不同的编码方式。

原码、反码、补码和移码

对于纯整数,各编码方式数值如下:

原码数值 正负数 反码数值 补码数值 移码数值
X + X X 2 n 1 + X
2 n 1 + X - 2 n 1 + X 2 n + X 2 n 1 + X

可以看出,对于正整数,其原码、反码和补码是相同的。
而对于负整数,我们需要从数值的绝对值(假设值为X)来入手计算。其原码可看作是X的最高位的0换成了10表示正数,1表示负数),反码可看作是X的按位取反,补码可看作是X的按位取反的末位加1(也即其反码的末位加1)
移码较为特殊,在偏移量为的情况下,数值的移码可看作是将其补码的符号位取反获得。

事实上,对于纯小数,以上规律仍然成立。

特别地:0的原码和反码形式有0 00000001 1111111两种,而其补码只有0 0000000([+0]补)00000000([-0]补)一种。

例题训练

[+45]原 = 0 0101101
[-45]原 = 1 0101101
[+45]反 = 0 0101101
[-45]反 = 1 1010010
[+45]补 = 0 0101101
[-45]补 = 1 1010011
[+45]移 = 1 0101101
[-45]移 = 0 1010011

posted @ 2024-04-17 09:21  Nhwite  阅读(176)  评论(0)    收藏  举报