真值和机器数
真值
通常用正号、负号来分别表示正数(正号可省略)和负数,如+15、-8等。这种带“+”或者“-”符号的数称为真值。真值是机器数所代表的实际值。
机器数
在计算机中,通常将计算机的符号和数值一起编码,将数据的符号数字化,通常用“0”表示正,用“1”表示负。这种把符号“数字化”的数成为机器数。
无符号数和有符号数
无符号数
当一个编码的全部二进制位均为数值位而没有符号位时,该编码表示的就是无符号整数。
寄存器的位数反应无符号整数的范围。
有符号数
将符号数值化,并将符号位放在有效数字的前面,就组成了有符号数。
机器数的定点表示
定点小数
定点小数就是纯小数,约定小数点在符号位之后、有效数值部分最高位之前。
定点整数
定点整数就是纯整数,约定小数点位置在有效数值部分最低位之后。
原码表示法
用机器数的最高位表示数的符号,其余各位表示数的绝对值。
整数的原码表示
若字长为n+1,则原码整数的表示范围为-(2n-1)
≤
\leq
≤x
≤
\leq
≤ 2n-1。
小数的原码表示
若字长为n+1,则原码整数的表示范围为-(1-2-n)
≤
\leq
≤x
≤
\leq
≤ 1-2-n。
真值零的原码表示有正零和负零两种形式,即[+0]原=00000(第一个零是符号位),[-0]原=10000。
原码表示的优点是与真值的对应关系简单、直观,与真值的转换简单,并且用原码实现乘法的运算比较简单。缺点是0的表示不唯一,且原码的加减运算比较复杂。
因此,找到一个与负数等价的正数 来代替这个负数,就可以使减变成加,那就是补码。
例题
补码表示法
真值转化为补码:对于正数而言,与原码的方式一样。对于负数,符号位取1,其余各位由真值“按位取反,末位加1”得到。
补码转化为真值:若符号位为0,与原码的方式一样。若符号位为1,真值的符号为负,数值部分由补码“按位取反,末位加1”得到。
这里介绍另外一种方法获得补码,就是从左往右找到第一个1,这个1左边所有“数值位”按位取反。
整数的补码表示
若字长为n+1,则原码整数的表示范围为-2n
≤
\leq
≤x
≤
\leq
≤ 2n-1(比原码多表示一个-2n)。
小数的补码表示
若字长为n+1,则原码整数的表示范围为-1
≤
\leq
≤x
≤
\leq
≤ 1-2-n(比原码多表示一个-1)。
零的补码是唯一的,即[+0]补=[-0]补=0.0000,由定义[-1]补=10.0000-1.0000=1.0000。
例题
反码表示法
正数的反码与原码的方式一样,负数的反码,数值位需要按位取反。
整数的反码表示
小数的反码表示
例题
移码表示法
移码就是补码的基础上将符号位取反。、
用移码表示浮点数的阶码能方便地判断浮点数的阶码大小
补码加减法运算
加法
减法
例题
这里练习1和练习2的结果和预想的不同,是因为有位数的丢失。