计算机里数字的表示与存储

说来惭愧,今天做题的时候,发现对原码和补码的概念有些模糊不清,遂写篇博客巩固记忆。

进制

进制转换

无符号数与有符号数

只有有符号数才需要编码。

计算机中定点数的表示

在计算机中,无法表示数的真值。比如说,对$-11011_B$,不能表示负号。则要对其进行编码。

二进制原码

整数原码

二进制原码,把符号数值化,用0表示+,1表示-。

比如,$+1001_B$用原码表示是$01001$,$-1101_B$用原码表示是$11101$。

但是原码表示有2个0,分别是+0和-0。

优点是表示简单,缺点是加减运算复杂。

小数原码

二进制反码

整数反码

正数的反码是它的原码。

负数的反码是:符号位保持不变,尾数逐位取反(1变0,0变1)。

小数反码

二进制补码

整数补码

正数的补码是它的原码。

负数的补码是:在反码的基础上末尾+1(如果是负小数,就在小数点后的最后一位+1)。

模数M就是溢出量。

小数补码

二进制移码

移码又叫增码,是将全0码映射为最小负值、全1码映射为最大正值的编码方案。移码把补码加上一个偏移量进行修正,主要用于比较。

\(x_移=UnsigedOf(2^n+x_真)\) (n是比特位)

规则是:对补码的符号位取反,尾数保持不变

整数才有移码,小数没有移码。