本章学习内容:
计算机中数制与数制转换方法
计算机中数值数据的表示
机器数的概念
原码、补码、反码、移码表示及运算方法

计算机中数制与数制转换方法

计算机内部信息

数制与数制转换

计算机中常用进位计数制

二进制
数字:0,1
进位方式: 逢二进一
后缀:B 如10100011B

八进制
数字:0,1,2,3,4,5,6,7
进位方式: 逢八进一
后缀:O 或 Q 如137.67Q

十进制
数字: 0,1,2,3,4,5,6,7,8, 9
进位方式:逢十进一
后缀:D 或 无 如 1357.26

十六进制
数字: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F
进位方式:逢十六进一
后缀:H 如 19BF.36EH

任意进制数转换为十进制数

方法:按权相加。即利用按位展开公式将系数与位权值相乘后求和。

十进制数转换为任意进制数

数制转换原则:
两个有理数相等⇒这两个有理数的整数部分、小数部分分别相等。
进行不同数制之间的转换时要求:
整数部分、小数部分分别进行转换

数制转换方法

整数部分:除基取余

① 把被转换的十进制整数除以基数R,取其余数即为R进制整数的最低位的数字。
② 再用基数R去除前次所得的商,所得余数即为R进制整数相应位的数字。
③ 重复②,直到商为0为止。

小数部分:乘基取整

① 把被转换的十进制小数乘以基数R,取乘积的整数部分作为R进制小数的最高位的数字。
② 再用基数R乘前一步乘积的小数部分,取新的乘积的整数部分为R进制小数相应位的数字。
③ 重复②,直到乘积的小数部分为。或求得所要求的位数为止。

计算机中数值数据的表示

数据表示
能够由计算机硬件直接识别的数据类型,如定点数、浮点数等。
硬件直接识别
即某种数据类型可用计算机硬件直接表示出来,并能用计算机指令直接调用。

数据表示(取值范围、精度、类型)
影响计算机性能的全局性问题
直接影响算法的选择、硬件结构与组成
随硬件技术和应用需求而变化和发展
是复杂的系统设计问题

带符号数的表示

机器数与真值

由于计算机中的硬件电路只能直接表示和处理二进制数,所以需要研究带符号数的符号和小数点在计算机中如何表示。
1.机器数
采用二进制表示形式的连同数符一起代码化了的数据,在计算机中统称为机器数或机器码。机器数是数在计算机中的二进制表示形式。
2.真值
与机器数对应的用正、负符号加绝对值表示的实际数值称为真值。
3.机器数的特点
⑴ 数的符号二进制代码化。“0”代表+,“1”代表-,且放在数据的最高位。
⑵ 小数点本身是隐含的,不占用存储空间。
⑶ 每个机器数数据所占的二进制位数受机器硬件规模的限制,与机器字长有关。超过机器字长的数值要舍去。

机器数可分为
无符号数:机器字长的所有二进制位均表示数值
带符号数:数值部分和符号均用二进制代码表示


机器数表示的数值是不连续的

常见微处理器中的整数数据表示

无符号二进制数的数据表示

如何知道计算机表示的数据是否带符号?
计算机在执行指令时,指令所处理的数据类型由指令操作码决定

原码、补码、反码、移码表示及运算方法

原码表示

原码表示:保持原有的数值部分的形式不变,只将符号用二进制代码表示。
原码表示是最简单的机器数表示方法。

  1. 原码的定义
    纯小数原码定义:



原码中 0 的表示

原码的表数范围


原码的移位规则

原码的特点

⑴ 原码表示直观、易懂,与真值的转换容易。
⑵ 原码表示中0有两种不同的表示形式,给使用带来了不便。
通常0的原码用[+0]原表示,若在计算过程中出现了[-0]原,则需要用硬件将[-0]原变为[+0]原。
⑶ 原码表示的加减运算复杂。
利用原码进行两数相加运算时,首先要判别两数符号,若同号则做加法,若异号则做减法。
在利用原码进行两数相减运算时,不仅要判别两数符号,使得同号相减,异号相加;还要判别两数绝对值的大小,用绝对值大的数减去绝对值小的数,取绝对值大的数符号为结果的符号。
可见原码表示不便于实现加减运算。

补码表示

引入补码的目的是为了解决原码表示在加减运算时的不便。
1.模的概念
根据运算时“模”的概念
5-2=5+8=3 (mod 10)
对于某一确定的模,某数减去一个数,可以用加上那个数的负数的补数来代替。

补码的定义

在计算机中,由于数据是用二进制编码表示的,所以把补数称为补码
对于纯小数表示,通常取模 M=2
对于纯整数表示,通常取模 M=2^(n+1) (n为除符号位以外数值位的位数)

特殊数的补码表示


补码的简便求法

补码的几何性质



① 正数的补码就是其本身,负数的补码表示的实质是把负数映像到正值区域,因此加上一个负数或减去一个正数可以用加上另一个数(补码)来代替。
② 从表示符号的角度看,符号位的值代表了数的正确符号,0表示正数,1表示负数。从映像值来看,符号位的值是映像值的一个数位,因此在补码运算中,符号位与数值位一样参加运算。
补码的几何性质说明了补码运算的基础。

原码运算时符号位不能参加运算。

补码的几个关系

补码与原码的关系



补码与机器负数的关系


补码的移位规则

补码的右移规则
符号位不变,数值位各位向右移位,高位移空位置补与符号位相同的代码。
补码的左移规则
连同符号位同时左移,低位移空位置补0。如果移位后符号位与移位前符号位不一致,说明移位出错,将有效位移出了。

补码的模

补码总是对确定的模而言的。如果补码运算结果超过了模,则模将自动丢失。
补码运算在运算过程中,模不能改变。
因为整数补码的模不同,所以不能将不同位数的补码直接进行运算。如需进行运算,需要进行符号扩展

补码的特点

⑴ 在补码表示中,用符号位x0表示数值的正负,形式与原码表示相同,即0正1负。但补码的符号可以看作是数值的一部分参加运算。
⑵ 在补码表示中,数值“0”只有一种表示方法,即00…0。
⑶ 负数补码的表示范围比负数原码的表示范围略宽。纯小数的补码可以表示到“-1”,纯整数的补码可以表示到“-2^n”。
由于补码表示中的符号位可以与数值位一起参加运算,并且可以将减法转换为加法进行运算,简化了运算过程,因此计算机中均采用补码进行加减运算。

反码表示

反码的求法

反码中“0”的表示

反码的表数范围

反码的表数范围与原码相同。
在纯小数反码中不能表示“-1”
在纯整数反码中不能表示“-2^n”

反码与原码的关系

反码的特点

⑴ 在反码表示中,用符号位x0表示数值的正负,形式与原码表示相同,即0正1负。
⑵ 在反码表示中,数值0有两种表示方法。
⑶ 反码的表示范围与原码的表示范围相同。注意,纯小数的反码不能表示“-1”,纯整数的反码不能表示“-2^n”。

反码表示在计算机中往往作为数码变换的中间环节。

移码表示


移码的几何性质



移码表示的实质是把真值映像到一个正数域,因此移码的大小可直观地反映真值的大小。
不管正数还是负数,用移码表示时,都可以按无符号数比较大小。

移码中“0”的表示

移码与补码的关系

整数补码的数值部分不变,符号取反,即得整数移码。反之亦然。即:

移码的特点


移数值为K的移码

根据移码的几何性质,可以将移码的定义进行扩展,得到特殊的移码为:
移码=K+实际数值
K:约定的移数值

例:移127码,移数值为127,即:
移127码=127+实际数值

不同码制之间的转换