01-2带符号数的代码表示
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形式相近, 多了个0
1.2 带符号数的代码表示
真值与机器数 原码、反码和补码 机器数的加、减运算 十进制数的补数
1.2 带符号数的代码表示
数有正负问题,计算机中 如何表示带符号的数?
1.2.1 真值与机器数
真值:直接用“ +” “-” 符号表示的带符号数。 机器不认识,不能在机器中使用。
11 10 9 8 12 1 2
+8
3
-4
7 6
4
5
两种拨法:
倒拨4小时,即 10-4 = 6
顺拨8小时,即 10 + 8 = 12 + 6
自然丢失
12是钟表的最大数(或最大量程),称该钟表
系统的模,系统的数字超过此数则模自然丢失。 这样利用模的自然丢失,将减法变成加法。即
• 定点补码加法运算规则: [X+Y]补 =[X]补+[Y]补
数的符号 正数:+(或省略) 负数:数的符号位:数的最高位 数的符号在r进制数中的表示 正数:0 负数:r-1 数的符号在二进制数中的表示 正数:0 负数:1
9 1=64+16+8+2+1
例 如,
( + 9 1)10 = (+ 1011011)2 ( - 9 1)10 =(- 1011011)2 ……真值
例:已知机器字长n=8,X= 120, Y=10,求X+Y=?
解:[X]补=01111000,[Y]补=00001010, [X]补= 0 1 1 1 1 0 0 0 + [Y]补 = 0 0 0 0 1 0 1 0
1 0 0 0 0 0 1 0 [X+Y]补=10000010 X+Y的真值 ( -130)10 8位计算机数值表达范围:(-128 ~+127) 运算结果超出机器数值范围发生溢出错误。
整数:
X
[X]反= (2n -1)+X 0 ≥ X > -2n-1 X3=+1011011 , [X3] 反 =01011011 X4= -1011011 , [X4] 反 =10100100
1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1 0 01 0 0
2n-1 > X ≥ 0
例 完成下列数的真值到原码的转换 X1 = + 0.1011011 [X1]原=0.1011011 X2 = - 0.1011011 [X2]原=1.1011011
原码小数的表示范围:
Βιβλιοθήκη Baidu
[+0]原 =0.0000000 ; [-0]原 =1.0000000 最大值 : 1- 2-(n-1) 最小值:-(1- 2-(n-1)) 表示数的个数: 2n - 1
1.2.6
十进制数的补数
带符号十进制数也有三种表示方 法,它们分别:符号-数值表示、 “对9的补数”及“对10的补数”。
符号-数值表示
习惯上用0000(等效于十进制数 0)表示正,而用1001(相当于 十进制数9)表示负。 +9 00001001 -9 10011001
十进制数“对10的补数”的减法运 算和二进制数的补码的减法运算相似, 可将减法转换成加法来实现。
符 数值位 号 位
[- 4]补 = [- 0000100]补 = 1 1111011 + 1 = 1 1111100 [-4]反 [+ 0]补 = [+ 0000000]补 = 0 0000000 [- 0]补 = [- 0000000]补 = 1 1111111 + 1 = 0 0000000
1 将十进制数转换成二进制数。 D = - (1101)*2 -6 = - 0.001101 2 对二进制数求补。 D补=1.110011
Y=53=32+16+4+1
100000+10000+100+1 =110101
8=7+1 符号位为0
0110101 00110101
[Y]补=00110101
例:已知机器字长n=8,X=-44, Y=-53,求X+Y=?
解:[44]补=00101100, [53]补=00110101 [X]补=[-44]补=11010100, [Y]补=[-53]补=11001011, [X]补 = 1 1 0 1 0 1 0 0 + [Y]补 = 1 1 0 0 1 0 1 1 [X+Y]补 = 1 1 0 0 1 1 1 1 1 超出8位,舍弃模 值 X+Y=-01100001,X+Y=( -97)
[+ N]反 = [+ N]原
[- N]反 = 1 [ N ]原
“ 0” 的反码有两种不同的形式。
[+ 0 ]反 = [0] 0 0 0 … 0
[- 0]反= [1] 1 1 1 … 1
二进制的补(two’s complements)
正数与负数的补码是完全不同的。 规则:[+ N]补 = [+ N]原 [- N]补 = [- N]反 + 1 (符号位参与计算)
[X]反=
(2- 2-(n-1) )+X 0 ≥ X > -(1-2-(n-1))
X1=+0.1011011 , [X1] 反 =0.1011011 X2= -0.1011011 , [X2] 反 =1.0100100
1. 1 1 1 1 1 1 1 -0. 1 0 1 1 0 1 1 1. 0 1 0 0 1 0 0
[+0]反=00000000 ; [-0]反 =11111111
反码所表示的数值范围:(以8位为例) 正数: [+ N]反 = 0 0000000 ~ 0 1111111 即:0~ +127 负数: [-N]反 = 1 0000000 ~ 1 1111111 即:-127~ 0
总结:反码的特点
正数与负数的反码完全不同。
在没有溢出的情况下:
[X+Y]补 =[X]补+[Y]补。
符号位与数值位一起直接参加运算。 符号位产生的进位位为模可以丢掉。
二、定点补码减法
• 定点补码减法运算规则: [X-Y]补=[X]补+[-Y]补
从Y补求-Y补的法则是:对Y补带符号位 一起求补。
例:已知机器字长n=8,X=44, Y=53,求X-Y=?
例
完成下列数的真值到原码的转换。 X1 = + 1011011 [X1] 原 = 01011011 X2 = [X2]
原
- 1011011 = 11011011
N=+1101001 N=-1101001
N=+ 0 N=- 0
[N]原 = 0 1 1 0 1 0 0 1 [N]原 = 1 1 1 0 1 0 0 1
补码运算特点:
在无溢础的情况下,符号位与数值 位一同直接参加运算。 直接丢模(符号位的进位位)。 补码可将减法变加法进行运算。 已知Y补,求(-Y)补的方法为连符号 位一起直接求补。
指出:由于采用补码可把减法化成加法,因 此,机器中的+、-、×、÷运算,均归结为一 种加法运算,从而使计算机的硬软结构非常简单。 为此,机器中带符号的数,无论是正数或负数均 采用补码形式,而运算的结果也是补码形式。
真值
1011 -1011 0.1011 -0.1011 0
原码
01011 11011 0.1011 1.1011 00000 10000
反码
01011 10100 0.1011 1.0100 00000 11111
补码
01011 10101 0.1011 1.0101 00000 补码零的 表示唯一 形式相同
解:[X]补=00101100,[Y]补=00110101, [-Y]补=11001011 [X]补 = 0 0 1 0 1 1 0 0 [-Y]补= 1 1 0 0 1 0 1 1 + 1 1 1 1 0 1 1 1
[X-Y]补=11110111, X-Y=(-0001001)2=(-9)10
例:已知机器字长n=8,X=-44, Y=-53,求X-Y=?
总结:补码的特点
正数和负数的补码是不同的。
[+ N]补 = [+ N]原
[- N]补 = [- N]反 + 1
机器数与真值间的互换
真值 -11010 010100 110100 110100 110100 111111 原码 反码 补码
求补码的经验法
1.2.3 机器数的加减运算
1. 减变加的概念 常例:钟表校时 欲将钟表时间从10点拨到6点。
解:[X]补=11010100,[Y]补=11001011, [-Y]补=00110101 [X] = 1 1 0 1 0 1 0 0 + [-Y] = 0 0 1 1 0 1 0 1 1 0 0 0 0 1 0 0 1
补 补
超出8位(模值),舍弃 [X-Y]补=00001001,X-Y=+0001001 =(+9)
例 完成下列数的真值到补码的转换。 X1 = + 0 1011011 [X1]补=01011011 X2 = - 0 1011011 [X2]补=10100101
补码的表示范围:
N位纯整数: 2n-1 –1 -2n-1 N位纯小数: 1- 2-(n-1) - 1 均能表示 2n 个数
例:(以8位二进制数为例) [+ 4]补 = [+ 0000100]补 = 0 0000100
例 若二进制原码小数的位数分别是8、 16位,求其该数表示的最大值、最小值及 所能表示数的个数? 8位: 127/128,-127/128,255 16位: 32767/32768 , -32767/32768 , 65535
整数:
X [X]原 = 2n-1-X=2n-1+|X| 0≥X≥-(2n-1-1) 2n-1-1≥X≥0
3. 补码
Radix Complements
模:计量器具的容量,或称为模数。 4位字长的机器表示的二进制整数为: 0000-1111 共16种状态,模为16= 24 。 整数N位字长的模值为 2n,一位符 号位的纯小数的模值为2。 补码的定义:正数的补码就是正数 的本身,负数的补码是原负数加上模。
……真值
机器只能认识二进制数,因此数的正与负
必须用二进制数来表示。用0和1两个代码表示 正和负,并规定一个数的最高位为符号位。从 而得到机器数。
机器数:将符号数值化后的二进制数。机器 能认识。 例如: +1010110 真值 -1010110 符号位 数值 0 1010110 机器数 1 1010110
符号二进制编码遵循的原则
符号二进制代码化。 编码直观、方便编码。 方便处理(运算)。 N=1+N-1
1.2.2 原码、反码与补码
1. 原码 (Sign Magnitude Numbers)
原码表示法用“0”表示正号,用“1” 表示负号,有效值部分用二进制的绝对值 表示。
小数: X [X]原 = 1-X=1+|X| 0≥X≥-(1-2-(n-1) ) 1- 2-(n-1) ≥X≥0
小数: X [x]补= 2+X=2-|X| 0>X≥-1 1- 2-(n-1) ≥X≥0
例 完成下列数的真值到补码的转换。 X1 = + 0.1011011 [X1]补=01011011 X2 = - 0.1011011 [X2]补=10100101
整数: X [x]补= 2n+X=2n-|X| 0>X≥- 2(n-1) 2(n-1) -1 ≥X≥0
[+ 0]原 = 0 0 0 0 0 0 0 0
[- 0]原 = 1 0 0 0 0 0 0 0
原码整数的表示范围:
[+0]原 =00000000 ; [-0]原 =10000000 最大值 : 2(n-1)-1 最小值:-(2-(n-1)-1) 表示数的个数: 2n - 1
例 若二进制的位数分别是8、16,求其表示 整数的最大值、最小值及表示数的个数。 8位: 127,-127,255 16位: 32767 , -32767 , 65535
原码特点:
表示简单,易于同真值之间进行转 换,实现乘除运算规则简单。 进行加减运算时,符号位与数值位 分别计算,不方便。
2、反码 Diminished Radix Complement
正数的表示与原、补码相同, 负数的补码符号位为1,数值位是 将原码的数值按位取反,就得到该 数的反码表示。
小数: X 1> X ≥ 0
•在模数系统下,任意两数的补码之 和等于该两数之和的补码。
例:已知机器字长n=8,X=44,Y=53, 求X+Y=?
X=44=32+8+4
100000+1000+100 =101100
8=7+1 符号位为0
0101100 00101100
[X]补=00101100
例:已知机器字长n=8,X=44,Y=53, 求X+Y=?