说来惭愧,今天做题的时候,发现对原码和补码的概念有些模糊不清,遂写篇博客巩固记忆。
进制
进制转换
无符号数与有符号数
只有有符号数才需要编码。
计算机中定点数的表示
在计算机中,无法表示数的真值。比如说,对$-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是比特位)
规则是:对补码的符号位取反,尾数保持不变。
整数才有移码,小数没有移码。