真值原码反码补码详解和习 题
- 格式:pdf
- 大小:295.46 KB
- 文档页数:13
补码补码补码(two's complement) 1、在计算机系统中,数值一律用补码来表示(存储)。
主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。
另外,两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
2、补码与原码的转换过程几乎是相同的。
补码概述求给定数值的补码表示分以下两种情况:(1)正数的补码与原码相同。
【例1】+9的补码是00001001。
(备注:这个+9的补码说的是用8位的2进制来表示补码的,补码表示方式很多,还有16位2进制补码表示形式,以及32位2进制补码表示形式等。
)(2)负数的补码负数的补码是对其原码逐位取反,但符号位除外;然后整个数加1。
同一个数字在不同的补码表示形式里头,是不同的。
比方说-15的补码,在8位2进制里头是11110001,然而在16位2进制补码表示的情况下,就成了1111111111110001。
在这篇补码概述里头涉及的补码转换默认了把一个数转换成8位2进制的补码形式,每一种补码表示形式都只能表示有限的数字。
【例2】求-7的补码。
因为给定数是负数,则符号位为“1”。
后七位:+7的原码(0000111)→按位取反(1111000)→加1(1111001)所以-7的补码是11111001。
已知一个数的补码,求原码的操作分两种情况:(1)如果补码的符号位为“0”,表示是一个正数,其原码就是补码。
(2)如果补码的符号位为“1”,表示是一个负数,那么求给定的这个补码的补码就是要求的原码。
再举一个例子:求-64的补码+64:0100000011000000【例3】已知一个补码为11111001,则原码是10000111(-7)。
因为符号位为“1”,表示是一个负数,所以该位不变,仍为“1”。
其余七位1111001取反后为0000110;再加1,所以是10000111。
在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。
8086微型计算机原理与应用(吴宁)习题参考答案(第一章)第一章计算机基础知识1-3 写出下列机器数的真值(1)01101110 真值=+1101110B=+110(2)10001101 真值=-0001101B=-13(3)01011101 真值=+1011001B=+89(4)1100110 真值=-1001110B=-781-4 写出下列二进制数据的原码、反码和补码(设字长为8位)(1)+010111原码=反码=补码=00010111(2)+101011原码=反码=反码=00101011(3)-101000原码=10101000 反码=11010111 补码=11011000(4)-111111原码=10111111 反码=11000000 补码=110000011-5 写出等效的十进制数值:(1)[X]原=[X]反=[X]补= 0001110 真值X=+14(2)[X]原=11111111 真值X= -127[X]反= 11111111 真值X= -0[X]补= 11111111 真值X= -1(3)[X]原= 10000000 真值X=-0[X]反= 10000000 真值X=-127[X]补= 10000000 真值X=-128(4)[X]原=10000001 真值X= -1[X]反= 10000001 真值X=-126[X]补= 10000001 真值X= -1271-6 计算下列各式(1)00020200+00100001= 00110101(2)00010100+00100001=00110101(3)11101100+00100001=00001101(4)11101100+ 11011111=11001011(5)00010100+10111110=11010010(6)11101100+ 11111100=111010001-7用补码来完成下列计算,并判断有无溢出产生(字长8位)(1)85+6001010101+ 0011110010010001CS=0 CP=1 CS XOR CP=1 所以产生溢出OV=1(2)-85+60+0011110011100111CS=0 CP=0 CS XOR CP=0 无溢出(3)85-6001010101+110001001 00011001CS=1 CP=1 CS XOR CP=0 无溢出(4)-85-6010101011+ 110001001 01101111CS=1 CP=0 CS XOR CP=1 产生溢出1-8补码加法判断有无溢出(1)01001010+01100001 = 10101011 Cp=1,Cs=0 有溢出(2)01101100 —01010110=01101100+10101010=00010110Cp=1,Cs=1 无溢出1-9 转换BCD码(1)30D = (00110000)BCD (2)127D = (000100100111) BCD (3)00100010B=34D=(00110100) BCD (4)74H=116D=(000100010110) BCD 1-10 ASCⅡ码表示的字符41H =’A’ ; 71H=’r’ , 65H=’e’ , 20H=SP1-11 字符的ASCⅡ码‘9’= 39H , ‘*’= 2AH , ‘=’ = 3DH , ‘$’ = 24H , ‘ !’ = 21H1-12 加偶校验的字符的ASCⅡ码‘9’: 39H ; ‘*’:AAH ; ‘=’ : BDH‘$’ : 2DH ; ‘!’ : 21H1-13 补码表示的定点小数时,数值范围为-1 ——+(1- 2-9)补码表示的定点整数时,数值范围为-29 ——+ (—29–1)—补码表示阶码,原码表示尾数时,数值范围为-27 (1-2-5) ——+27 (1-2-5) 1-14试将下列数表示成浮点的规格化数。
原码、反码、补码详解!不懂的请看过来!(转)本篇⽂章讲解了计算机的原码、反码和补码,并且进⾏了深⼊探求了为何要使⽤反码和补码,以及更进⼀步的论证了为何可以⽤反码、补码的加法去计算原码的减法。
论证部分如有不对的地⽅请各位⽜⼈帮忙指正!希望本⽂对⼤家学习计算机基础有所帮助!⼀. 机器数和机器数的真值在学习原码,反码和补码之前,需要先了解机器数和真值的概念。
1、机器数⼀个数在计算机中的⼆进制表⽰形式,叫做这个数的机器数。
机器数是带符号的,在计算机⽤机器数的最⾼位存放符号,正数为0,负数为1。
⽐如,⼗进制中的数 +3 ,计算机字长为8位,转换成⼆进制就是0000 0011。
如果是 -3 ,就是 100 00011 。
那么,这⾥的 0000 0011 和 1000 0011 就是机器数。
2、机器数的真值因为第⼀位是符号位,所以机器数的形式值就不等于真正的数值。
例如上⾯的有符号数 1000 0011,其最⾼位1代表负,其真正数值是 -3,⽽不是形式值131(1000 0011转换成⼗进制等于131)。
所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。
例:0000 0001的真值 = +000 0001 = +1,1000 0001的真值 = –000 0001 = –1⼆. 原码, 反码, 补码的基础概念和计算⽅法在探求为何机器要使⽤补码之前,让我们先了解原码、反码和补码的概念。
对于⼀个数,计算机要使⽤⼀定的编码⽅式进⾏存储,原码、反码、补码是机器存储⼀个具体数字的编码⽅式。
1. 原码原码就是符号位加上真值的绝对值,即⽤第⼀位表⽰符号,其余位表⽰值。
⽐如:如果是8位⼆进制:[+1]原= 0000 0001[-1]原= 1000 0001第⼀位是符号位,因为第⼀位是符号位,所以8位⼆进制数的取值范围就是:(即第⼀位不表⽰值,只表⽰正负。
)[1111 1111 , 0111 1111]即[-127 , 127]原码是⼈脑最容易理解和计算的表⽰⽅式。
原反补码转换练习题及答案一、选择题1. 假设一个有符号的8位二进制数,其原码表示为10001000,其反码和补码分别是什么?A. 10001000 10001111B. 11110111 11111000C. 11110111 11110110D. 10001000 100011112. 以下哪个二进制数的补码表示是10000000?A. 10000000B. 01111111C. 10000001D. 011111113. 将十进制数-27转换为8位二进制数的补码表示,结果是什么?A. 11100011B. 11100010C. 11100001D. 111000004. 如果一个8位二进制数的反码是10000001,那么它的原码表示的十进制数是多少?A. -127B. -1C. 127D. 15. 8位二进制数的补码表示为11111110,其对应的原码表示的十进制数是多少?A. -1B. -2C. 254D. 255二、填空题6. 将十进制数-15转换为8位二进制数的原码表示为______。
7. 如果一个8位二进制数的原码表示为10001011,那么它的反码表示为______。
8. 补码表示的二进制数10000000在十进制中表示的数值为______。
9. 8位二进制数的补码表示为11111111,其对应的反码表示为______。
10. 将十进制数-128转换为8位二进制数的补码表示,结果为______。
三、简答题11. 描述如何将一个8位二进制数的原码转换为补码。
12. 解释为什么8位二进制数的补码表示中,最大的正数和最小的负数的补码是相同的。
四、计算题13. 将十进制数-35转换为8位二进制数的原码、反码和补码,并说明转换过程。
14. 假设有两个8位二进制数,原码分别为01101100和10001101,计算它们的反码和补码,并说明它们在十进制中分别表示的数值。
答案:1. B2. B3. A4. A5. B6. 111101117. 111101018. -1289. 1111111010. 1000000011. 将8位二进制数的原码中的最高位(符号位)保持不变,其余位取反,得到反码。
真值原码逆补的详细讲解和练习原始码、逆码和补码的概念本节要求掌握原始码、逆码和补码的概念。
根据小数点处理方式,数字数据的表示可分为定点数和浮点数。
根据符号位,有三种机器号码:原始码、反码和补码。
一、计算机中的数据表示1.数字的定点数和浮点数在计算机内部表示。
通常,带小数点的数字有两种表达方式,即所谓的定点数和浮点数。
(1)固定点:但是,小数点在数字中的位置是固定的。
数字的最高位是符号位。
小数点可以在符号数字之后,也可以在数字的末尾。
小数点本身不需要表达。
这是隐含的。
缺点:只有纯小数或整数可以用定点表示;(2)浮点数:小数点在数字中的位置是浮动的,不是固定的。
通用浮点数既有整数部分也有小数部分。
通常,对于任何二进制数N,它可以表示为:N=2p× s n,p,s是二进制数,p是n的顺序码,通常是一个定点整数。
订单代码指示数据中小数点的位置。
它确定浮点表示范围s的尾数,通常是定点小数,通常用补码或原始代码表示。
尾数部分给出浮点数的有效位数,决定浮点数的精度,归一化后的浮点数为0.5 ≤| s | 1;0.1B=( 1/2 )D=( 2-根据符号位具有原始代码、反码和补码的机器数量。
一、计算机中的数据表示1.数字的定点数和浮点数在计算机内部表示。
通常,带小数点的数字有两种表达方式,即所谓的定点数和浮点数。
(1)固定点:但是,小数点在数字中的位置是固定的。
数字的最高位是符号位。
小数点可以在符号数字之后,也可以在数字的末尾。
小数点本身不需要表达。
这是隐含的。
缺点:只有纯小数或整数可以用定点表示;(2)浮点数:小数点在数字中的位置是浮动的,不是固定的。
通用浮点数既有整数部分也有小数部分。
通常,对于任何二进制数N,它可以表示为:N=2p× s n,p,s是二进制数,p是n的顺序码,通常是一个定点整数。
订单代码指示数据中小数点的位置。
它确定浮点表示范围s的尾数,通常是定点小数,通常用补码或原始代码表示。
测试题1 、无符号二进制数1100 1000 所表示的十进制数为。
A .104 B. 148 C. 172 D . 2002 、有符号二进制数1100 1000 所表示的十进制数为。
A . -200 B. -72 C. 72 D . 2003 、用16 位和8 位机器码分别写出十进制数+58 和—58 的原码、反码和补码。
4 、若用8 位机器码表示十进制数- 101 ,则原码表示的形式为(1);补码表示的形式为(2)。
(1)A.1110 0101 B.1001 1011 C.1101 0101 D.1110 0111(2)A.1110 0101 B.1001 1011 C.1101 0101 D.1110 01115 、已知一个字长为8 的整数的原码是10011010 ,求它的补码。
6 、已知一个字长为8 的整数的补码是10011000 ,求它的原码。
7、在字长为16 位的系统环境下,一个16 位带符号整数的二进制补码为1111 1111 1110 1101。
其对应的十进制整数应该是()。
A .19B .- 19C .18D .- 188 、一个字长为8 位的整数的补码是11111001 ,则它的原码是()。
A .0000 0111B .0111 1001C .1111 1001D .1000 01119 、在整数的补码表示法中,以下说法正确的是()。
A .只有负整数的编码最高位为1B .在编码的位数确定后,所能表示的最小整数和最大整数的绝对值相同C .整数0 只有一个唯一的编码D .两个用补码表示的数相加时,如果在最高位产生进位,则表示运算溢出参考答案:1 、D2 、B3 、+58 ,16 位原码:0000 0000 0011 1010反码:0000 0000 0011 1010补码:0000 0000 0011 1010+58 ,8 位原码:0011 1010 反码:0011 1010 补码:0011 1010 -58 ,16 位原码:1000 0000 0011 1010反码:1111 1111 1100 0101补码:1111 1111 1100 0110-58 ,8 位原码:1011 1010 反码:1100 0101 补码:1100 01104 、(1) A (2) B5 、1110 01106 、1110 10007 B 8 D 9AC。