您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 01-2带符号数的代码表示
补码反码原码真值000000000011111000001000001.01011.01001.1011-0.10110.10110.10110.10110.1011101011010011011-10110101101011010111011形式相同形式相近,多了个0补码零的表示唯一1.2带符号数的代码表示真值与机器数原码、反码和补码机器数的加、减运算十进制数的补数数有正负问题,计算机中如何表示带符号的数?1.2带符号数的代码表示1.2.1真值与机器数真值:直接用“+”“-”符号表示的带符号数。机器不认识,不能在机器中使用。数的符号正数:+(或省略)负数:-数的符号位:数的最高位数的符号在r进制数中的表示正数:0负数:r-1数的符号在二进制数中的表示正数:0负数:1=(+1011011)2(-91)10=(-1011011)2……真值机器只能认识二进制数,因此数的正与负必须用二进制数来表示。用0和1两个代码表示正和负,并规定一个数的最高位为符号位。从而得到机器数。……真值例如,(+91)1091=64+16+8+2+1机器数:将符号数值化后的二进制数。机器能认识。例如:+101011001010110真值机器数符号位数值-101011011010110符号二进制代码化。编码直观、方便编码。方便处理(运算)。N=1+N-1符号二进制编码遵循的原则1.原码(SignMagnitudeNumbers)1.2.2原码、反码与补码原码表示法用“0”表示正号,用“1”表示负号,有效值部分用二进制的绝对值表示。小数:X1-2-(n-1)≥X≥0[X]原=1-X=1+|X|0≥X≥-(1-2-(n-1))例完成下列数的真值到原码的转换X1=+0.1011011X2=-0.1011011[X1]原=0.1011011[X2]原=1.1011011原码小数的表示范围:[+0]原=0.0000000;[-0]原=1.0000000最大值:1-2-(n-1)最小值:-(1-2-(n-1))表示数的个数:2n-1例若二进制原码小数的位数分别是8、16位,求其该数表示的最大值、最小值及所能表示数的个数?8位:127/128,-127/128,25516位:32767/32768,-32767/32768,65535整数:X2n-1-1≥X≥0[X]原=2n-1-X=2n-1+|X|0≥X≥-(2n-1-1)例完成下列数的真值到原码的转换。X1=+1011011X2=-1011011[X1]原=01011011[X2]原=11011011N=+1101001[N]原=01101001N=-1101001[N]原=11101001N=+0[+0]原=00000000N=-0[-0]原=10000000原码整数的表示范围:[+0]原=00000000;[-0]原=10000000最大值:2(n-1)-1最小值:-(2-(n-1)-1)表示数的个数:2n-1例若二进制的位数分别是8、16,求其表示整数的最大值、最小值及表示数的个数。8位:127,-127,25516位:32767,-32767,65535原码特点:表示简单,易于同真值之间进行转换,实现乘除运算规则简单。进行加减运算时,符号位与数值位分别计算,不方便。2、反码DiminishedRadixComplement正数的表示与原、补码相同,负数的补码符号位为1,数值位是将原码的数值按位取反,就得到该数的反码表示。小数:X1>X≥0[X]反=(2-2-(n-1))+X0≥X-(1-2-(n-1))X1=+0.1011011,[X1]反=0.1011011X2=-0.1011011,[X2]反=1.01001001.1111111-0.10110111.0100100整数:X2n-1X≥0[X]反=(2n-1)+X0≥X-2n-1X3=+1011011,[X3]反=01011011X4=-1011011,[X4]反=1010010011111111-101101110100100[+0]反=00000000;[-0]反=11111111反码所表示的数值范围:(以8位为例)正数:[+N]反=00000000~01111111即:0~+127负数:[-N]反=10000000~11111111即:-127~0总结:反码的特点正数与负数的反码完全不同。“0”的反码有两种不同的形式。[+N]反=[+N]原[-N]反=1[N]原[+0]反=[0]000…0[-0]反=[1]111…1正数与负数的补码是完全不同的。规则:[+N]补=[+N]原[-N]补=[-N]反+1(符号位参与计算)二进制的补(two’scomplements)模:计量器具的容量,或称为模数。4位字长的机器表示的二进制整数为:0000-1111共16种状态,模为16=24。整数N位字长的模值为2n,一位符号位的纯小数的模值为2。补码的定义:正数的补码就是正数的本身,负数的补码是原负数加上模。3.补码RadixComplements小数:X1-2-(n-1)≥X≥0[x]补=2+X=2-|X|0X≥-1例完成下列数的真值到补码的转换。X1=+0.1011011X2=-0.1011011[X1]补=01011011[X2]补=10100101整数:X2(n-1)-1≥X≥0[x]补=2n+X=2n-|X|0X≥-2(n-1)例完成下列数的真值到补码的转换。X1=+01011011X2=-01011011[X1]补=01011011[X2]补=10100101补码的表示范围:N位纯整数:2n-1–1-2n-1N位纯小数:1-2-(n-1)-1均能表示2n个数[+4]补=[+0000100]补=00000100符号位数值位[-4]补=[-0000100]补=11111011+1=11111100[-4]反[+0]补=[+0000000]补=00000000[-0]补=[-0000000]补=11111111+1=00000000例:(以8位二进制数为例)1将十进制数转换成二进制数。D=-(1101)*2-6=-0.0011012对二进制数求补。D补=1.110011总结:补码的特点正数和负数的补码是不同的。[+N]补=[+N]原[-N]补=[-N]反+1真值原码反码补码-11010010100110100110100110100111111机器数与真值间的互换求补码的经验法1.2.3机器数的加减运算1.减变加的概念常例:钟表校时欲将钟表时间从10点拨到6点。121111087611108723459+8-4两种拨法:倒拨4小时,即10-4=6顺拨8小时,即10+8=12+6自然丢失12是钟表的最大数(或最大量程),称该钟表系统的模,系统的数字超过此数则模自然丢失。这样利用模的自然丢失,将减法变成加法。即•定点补码加法运算规则:[X+Y]补=[X]补+[Y]补•在模数系统下,任意两数的补码之和等于该两数之和的补码。X=44=32+8+4例:已知机器字长n=8,X=44,Y=53,求X+Y=?100000+1000+100=10110001011008=7+1符号位为000101100[X]补=00101100Y=53=32+16+4+1例:已知机器字长n=8,X=44,Y=53,求X+Y=?100000+10000+100+1=11010101101018=7+1符号位为000110101[Y]补=00110101例:已知机器字长n=8,X=-44,Y=-53,求X+Y=?解:[44]补=00101100,[53]补=00110101[X]补=[-44]补=11010100,[Y]补=[-53]补=11001011,[X]补=11010100+[Y]补=11001011[X+Y]补=110011111超出8位,舍弃模值X+Y=-01100001,X+Y=(-97)在没有溢出的情况下:[X+Y]补=[X]补+[Y]补。符号位与数值位一起直接参加运算。符号位产生的进位位为模可以丢掉。二、定点补码减法•定点补码减法运算规则:[X-Y]补=[X]补+[-Y]补从Y补求-Y补的法则是:对Y补带符号位一起求补。例:已知机器字长n=8,X=44,Y=53,求X-Y=?解:[X]补=00101100,[Y]补=00110101,[-Y]补=11001011[X]补=00101100[-Y]补=11001011+11110111[X-Y]补=11110111,X-Y=(-0001001)2=(-9)10例:已知机器字长n=8,X=-44,Y=-53,求X-Y=?解:[X]补=11010100,[Y]补=11001011,[-Y]补=00110101[X]补=11010100[-Y]补=00110101+超出8位(模值),舍弃[X-Y]补=00001001,X-Y=+0001001=(+9)100001001解:[X]补=01111000,[Y]补=00001010,[X]补=01111000[Y]补=00001010例:已知机器字长n=8,X=120,Y=10,求X+Y=?10000010[X+Y]补=10000010X+Y的真值(-130)108位计算机数值表达范围:(-128~+127)运算结果超出机器数值范围发生溢出错误。+补码运算特点:在无溢础的情况下,符号位与数值位一同直接参加运算。直接丢模(符号位的进位位)。补码可将减法变加法进行运算。已知Y补,求(-Y)补的方法为连符号位一起直接求补。指出:由于采用补码可把减法化成加法,因此,机器中的+、-、×、÷运算,均归结为一种加法运算,从而使计算机的硬软结构非常简单。为此,机器中带符号的数,无论是正数或负数均采用补码形式,而运算的结果也是补码形式。1.2.6十进制数的补数带符号十进制数也有三种表示方法,它们分别:符号-数值表示、“对9的补数”及“对10的补数”。符号-数值表示习惯上用0000(等效于十进制数0)表示正,而用1001(相当于十进制数9)表示负。+900001001-910011001十进制数“对10的补数”的减法运算和二进制数的补码的减法运算相似,可将减法转换成加法来实现。072532+)996750——————————丢掉←1069282 ̄符号位产生的进位必须丢掉。运算结果是“对10的补数”,即〔N1-N2〕10补=069282其真值为N1-N2=69282。例:给定N1=72532,N2=03250,求N=N1-N2。解:用“对10的补数”进行运算,即〔N1-N2〕10补=〔7253-03250〕10补=〔72532〕10补+〔-03250〕10补=072532+996750对9的补数十进制数的“对9的补数”与二进制数的反码类似。对于十进制正数N,它的“对9的补数”的表示形式与N的“对10的补数”的表示形式相同。对于十进制负数N,它的“对9的补数”的一般表示形式为〔N〕9补=10n-10-m+N-10n-1<N<0其中,n是十进制负数N的整数部分的位数(包括1位符号位);m是十进制负数N的小数部分的位数。例:若给定N1=5489和N2=3250,试求N=N1-N2。解:用“对9的补数”进行运算,即〔N1-N2〕9补=〔5489-3250〕9补=〔5489〕9补+〔-3250〕9补=05489+9674905489+)96749————————102238 ̄+)———→1————————02239符号位产生的进位需加在和数的最低位上。运算的结果是“对9的补数”,即〔N1-N2〕9补=02239其真值为N1-N2=2239X1=+1101101X2=-1101101数值数据的表示一、真值与机器数二、带符号二进制数的代码表示1.原码[X]原:原码反码补码变形补码尾数部分的表示形式:最高位:“0”表示“+”“1”表示“-”符号位+尾数部分(真值)原码的性质:“0”有两种表示形式[+00…0]原=000…0而[-00…
本文标题:01-2带符号数的代码表示
链接地址:https://www.777doc.com/doc-4292777 .html