文档库 最新最全的文档下载
当前位置:文档库 › 原码反码补码及位移运算

原码反码补码及位移运算

原码反码补码及位移运算

-3的原码:

1000,0000,0000,0000,0000,0000,0000,0011 -3的反码

1111,1111,1111,1111,1111,1111,1111,1100 -3的补码

1111,1111,1111,1111,1111,1111,1111,1101 -3无符号位右移3位

0001111,1111,1111,1111,1111,1111,1111,1

真值原码反码补码详解和习题

原码、反码和补码的概念 本节要求 掌握原码、反码、补码的概念 知识精讲 数值型数据的表示按小数点的处理可分为定点数和浮点数;按符号位有原码、反码和补码三种形式的机器数。 一.计算机中数据的表示方法 1、数的定点与浮点表示 在计算机内部,通常用两种方法来表示带小数点的数,即所谓的定点数和浮点数。 ①定点数:是小数点在数中的位置是固定不变的数,数的最高位为符号位,小数点可在符号位之后,也可在数的末尾,小数点本身不需要表示出来,它是隐含的。 缺点:只有纯小数或整数才能用定点数表示; ②浮点数:小数点在数中的位置是浮动的、不固定的数。 一般浮点数既有整数部分又有小数部分,通常对于任何一个二进行制数N,总可以表示成:N=±2P×S N、P、S均为二进制数, P为N的阶码,一般为定点整数,常用补码表示,阶码指明小数点在数据中的位置,它决定浮点的表示范围 S为N的尾数,一般为定点小数,常用补码或原码表示,尾数部分给出了浮点数的有效数字位数,它决定了浮点数的精度,且规格化浮点数0.5≤|S|<1; 0.1B=( 1/2 )D =( 2-1)D 0.11B=(1/2 + 1/4 )D =( 2-1+2-2)D 0.111B=(1/2 + 1/4 + 1/8 )D =( 2-1+2-2+2-3)D --------------------------- 在计算机中表示一个浮点数其结构为: 假设用八个二进制位来表示一个浮点数,且阶码部分占4位,其中阶符占一位;尾数部分占4位,尾符也占一位。 若现有一个二进制数N=(101100)2可表示为:2110×0.1011,则该数在机器内的表示形式为:101100B= 10110B * (21)D 101100B= 1011B * (22)D 101100B= 101.1B * (23)D 101100B= 10.11B * (24)D 101100B= 1.011B * (25)D 101100B= 0.1011B * (26110 一个浮点形式的尾数S若满足0.5≤|S|<1,且尾数的最高位数为1,无无效的0,则该浮点数称为规格化数;规格化数可以提高运算的精度。 S为原码表示,则S1=1 规格化数 S为补码表示N为正数,则S1 =1 N为负数,则S1=0

计算机组成原理第2章 例题及参考答案

第二章数码系统例题及答案 例题1写出下列各数的原码、反码、补码、移码(用二进制数表示)。 (1)-35/64 (2)23/128 (3)-127 (4)用小数表示-1 (5)用整数表示-1 (6)用整数表示-128 解:-1在定点小数中原码和反码表示不出来,但补码可以表示,-1在定点整数中华表示最大的负数,-128在定点整数表示中原码和反码表示不出来,但补码可以。 例题2设机器字长为16位,分别用定点小数和定点整数表示,分析其原码和补码的表示范围。 解:(1)定点小数表示 最小负数最大负数0 最小正数最大正数 二进制原码 1.111...111 1.000...001 0.000...001 0.111 (111) 十进制真值- (1-215) -2152-151-2-15 原码表示的范围:- (1-215) ~1-2-15 二进制补码 1.000...000 1.111...111 0.000...001 0.111 (111) 十进制真值-1 -2152-151-2-15 原码表示的范围:- 1 ~1-2-15

(2)定点整数表示 最小负数最大负数0 最小正数最大正数 二进制原码1111...111 1000...001 0000...001 0111 (111) 十进制真值- (215-1) -1 +1 215-1 原码表示的范围:- (215-1) ~215-1 [-32767 ~ +32767] 二进制补码1000...0001111...111 0000...001 0111 (111) 十进制真值-1 +1 215-1 原码表示的范围:- 215~215-1 [-32768 ~ +32767] 一、选择题 1.下列数中最小的数为()。 A.(101001)2B.(52)8C.(101001)BCD D.(233)16 2.下列数中最大的数为()。 A.(10010101)2B.(227)8C.(96)16D.(143)5 3.在机器数中,()的零的表示形式是惟一的。 A.原码B.补码C.反码D.原码和反码 4.针对8位二进制数,下列说法中正确的是()。 A.-127的补码为10000000 B.-127的反码等于0的移码 C.+1的移码等于-127的反码D.0的补码等于-1的反码 5.一个8位二进制整数,采用补码表示,且由3个“1”和5个“0”组成,则最小值为()。 A.-127 B.-32 C.-125 D.-3 6.计算机系统中采用补码运算的目的是为了( )。 A.与手工运算方式保持一致B.提高运算速度 C,简化计算机的设计D.提高运算的精度 7.某机字长32位,采用定点小数表示,符号位为1位,尾数为31位,则可表示的最大正小数为( ),最小负小数为( )。 A,+(231-1) B.-(1-2-32) C.+(1-2-31)≈+1 D.-(1-2-31)≈-1 8.某机字长32位,采用定点整数(原码)表示,符号位为1位,尾数为31位,则可表示的最大正整数为(),最小负整数为()。

进制转换及原码反码补码练习题

进制转换练习题 【例题1-1】十进制数1000对应二进制数为______,对应十六进制数为______。 供选择的答案 A:①1111101010 ②1111101000 ③1111101100 ④1111101110 B:①3C8 ②3D8 ③3E8 ④3F8 【例题1-2】十进制小数为0.96875对应的二进制数为______,对应的十六进制数为______。 供选择的答案 A:①0.11111 ②0.111101 ③0.111111 ④ 0.1111111 B:①0.FC ②0.F8 ③0.F2 ④0.F1 【例题1-3】二进制的1000001相当十进制的______,二进制的100.001可以表示为______。 供选择的答案 A:①62 ②63 ③64 ④65 B:①23+2–3②22+2–2③23+2–2④22+2–3 【例题1-4】十进制的100相当于二进制______,十进制的0.110011相当二进制的______。 供选择的答案 A:①1000000 ②1100000 ③1100100 ④1101000 B:①2–1+2–2+2–4+2–5②1–(2–3+2–4) ③1+(–2–3–2–4) ④1–2–3–2–4–2–6 【例题1-5】八进制的100化为十进制为______,十六进制的100化为十进制为______。 供选择的答案 A:①80 ②72 ③64 ④56 B:①160 ②180 ③230 ④256 【例题1-6】在答案群所给出的关系式中正确的为______,在给出的等式中不正确的为______。 供选择的答案 A:①0.1112<0.7510②0.78>0.C16

原码、反码、补码详解

本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有 不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数+3 ,计算机字长为8位,转换成二进制就是00000011。如果是-3 ,就是10000011 。 那么,这里的00000011 和10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如上面的有符号数10000011,其最高位1代表负,其真正数值是-3 而不是形式值131(10000011转换成十进制等于131)。所以,为区别起见,将带符号位的机器数对应的真正数值称为机器数的真值。 例:0000 0001的真值= +000 0001 = +1,1000 0001的真值= –000 0001 = –1 二. 原码, 反码, 补码的基础概念和计算方法. 在探求为何机器要使用补码之前, 让我们先了解原码, 反码和补码的概念.对于一个数, 计算机要使用一定的编码方式进行存储. 原码, 反码, 补码是机器存储一个具体数字的编码 方式. 1. 原码 原码就是符号位加上真值的绝对值, 即用第一位表示符号, 其余位表示值. 比如如果是8位二进制: [+1]原 = 0000 0001 [-1]原 = 1000 0001 第一位是符号位. 因为第一位是符号位, 所以8位二进制数的取值范围就是:

原码反码补码移码

原码、反码、补码、移码 正码、补码、反码、移码 数在计算机中是以二进制形式表示的。 数分为有符号数和无符号数。 原码、反码、补码都是有符号定点数的表示方法。 一个有符号定点数的最高位为符号位,0是正,1是负。 反码 = 原码(除符号位外)每位取反; 补码 = 反码 + 1; 反码 = 补码 - 1; 移码 = 补码符号位取反 以下都以8位整数为例, 原码就是这个数本身的二进制形式。 例如 0000001 就是+1 1000001 就是-1 正数的反码和补码都是和原码相同。 负数的反码是将其原码除符号位之外的各位求反 [-3]反=[10000011]反=11111100 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。 [-3]补=[10000011]补=11111101 一个数和它的补码是可逆的。 为什么要设立补码呢? 第一是为了能让计算机执行减法: [a-b]补=a补+(-b)补 第二个原因是为了统一正0和负0 正零:00000000 负零:10000000 这两个数其实都是0,但他们的原码却有不同的表示。 但是他们的补码是一样的,都是00000000 特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!)[10000000]补 =[10000000]反+1 =11111111+1 =(1)00000000 =00000000(最高位溢出了,符号位变成了0)

有人会问 10000000这个补码表示的哪个数的补码呢? 其实这是一个规定,这个数表示的是-128 所以n位补码能表示的范围是 -2^(n-1)到2^(n-1)-1 比n位原码能表示的数多一个 又例: 1011 原码:01011 反码:01011 //正数时,反码=原码 补码:01011 //正数时,补码=原码 -1011 原码:11011 反码:10100 //负数时,反码为原码取反 补码:10101 //负数时,补码为原码取反+1 0.1101 原码:0.1101 反码:0.1101 //正数时,反码=原码 补码:0.1101 //正数时,补码=原码 -0.1101 原码:1.1101 反码:1.0010 //负数时,反码为原码取反 补码:1.0011 //负数时,补码为原码取反+1 总结: 在计算机内,定点数有3种表示法:原码、反码和补码 所谓原码就是前面所介绍的二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。 反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。 1、原码、反码和补码的表示方法 (1)原码:在数值前直接加一符号位的表示法。 例如:符号位数值位 [+7]原= 0 0000111 B [-7]原= 1 0000111 B 注意:a. 数0的原码有两种形式:

带符号数的原码、反码与补码分析

一.带符号数的原码、反码与补码 所谓带符号数,其实就是一个二进制数据,它的最高位所代表的是符号,其余位是其“绝对值”。例如0101_0011,这个数据如果是带符号数,那么最高位的0就是代表这个数据为正数,其后的101-0011则代表这个数据的绝对值,为+83D。如果是1101_0011,则代表-83D。 1.1 原码 原码就是按照正数的符号位为0,负数的符号位为1,其他位就是数据的绝对值即可。例如当机器字长为8bit的二进制数时,它的最高位为符号位,因此其余的7bit位数据的绝对值。因此原码所能表示的数据范围是: - (2n-1-1)~+(2n-1-1) 当字长为8bit,则原码能表示的范围就是:-127~+127 例如83的原码就是:0101_0011 当字长为16bit,则原码能表示的范围就是:-32767~+32767 例如-83的原码就是:1000_0000_0101_0011 1.2 反码 对于一个带有符号位的二进制数来说,正数的反码与其原码相同,负数的反码为其原码除符号位外其余各位按位取反。 例如当字长为8bit时,+83D的反码就是:0101_0011,-83D的反码就是1010_1100 负数的反码与原码有很大的差别,一般情况下,反码主要用来当做求二进制数补码的中间形式。反码所表示的数据范围与原码相同: - (2n-1-1)~+(2n-1-1) 1.2 补码 正数的补码与其原码相同,负数的补码为其反码在最低位加1。 例如: X=+101_1011 [X]原码=0101_1011 [X]补码=0101_1011 X=-101_1011 [X]原码=1101_1011 [X]补码=1010_0101 补码表示的范围是: - 2n-1~+(2n-1-1)

原码、反码与补码知识讲解

2.2 原码、反码与补码 在计算机内的数(称之为“机器数”)值有3种表示法:原码、反码和补码。所谓原码就是带正、负号的二进制数,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。由此可见,这三种表示法中,关键是负数的表示方式不一样。 2.2.1 正负数表示、定点数与浮点数 在计算机内,通常把1个二进制数的最高位定义为符号位,用“0”表示正数,“1”表示负数;其余位表示数值。 规定小数点位置固定不变的数称为“定点数”;小数点的位置不固定,可以浮动的数称为“浮点数”。 2.2.2 原码 原码表示法是定点数的一种简单的表示法。用原码表示带符号二进制数时,符号位用0表示正,1表示负;数值位保持不变。原码表示法又称为符号-数值表示法。 1. 小数原码表示法 设有一数为x,则原码表示可记作[x]原(下标表示)。例如,X1= +1010110 ;X2= -1001010 原码表示数的范围与二进制位数有关。设二进制小数X=±0.X1X2…Xm,则小数原码的定义如下: 例如:X=+0.1011时,根据以上公式可得[X]原=0.1011;X=-0.1011时,根据以上公式可得[X]原= 1-(-0.1011)=1.1011=1.1011 当用8位二进制来表示小数原码时,其表示范围为:最大值为0.1111111,其真值约为(0.99)10 ;最小值为1.1111111,其真值约为(-0.99)10。根据定义,小数“0”的原码可以表示成0.0…0或1.0…0。 2. 整数原码表示法 整数原码的定义如下: 例如:X=+1101时,根据以上公式可得[X]原=01101;X=-1101时,根据以上公式可得[X]原=24-(-1101)=10000+1101=11101 当用8位二进制来表示整数原码时,其表示范围为:最大值为01111111,其真值为(127)10 ;最小值为11111111,其真值为(-127)10 。同样,整数“0”的原码也有两种形式,即00…0和10…0。 2.2.3 反码 用反码表示带符号的二进制数时,符号位与原码相同,即用0表示正,用1表示负;数值位与符号位相关,正数反码的数值位和真值的数值位相同;而负数反码的数值位是真值的数值位按位变反。 1. 小数反码表示法 设二进制小数X=±0.x1x2…xm,则其反码定义为: 例如,X=+0.1011时,根据以上公式可得[X]反=0.1011;当X=-0.1011时,根据以上公式可得[X]反=2-2-4+X=10.0000-0.0001-0.1011=1.0100。根据定义,小数“0”的反码有两种表示形式,即0.0…0和1.1…1。 2. 整数反码表示法 设二进制整数X=±Xn-1Xn-2…X0,则其反码定义为: 例如,X=+1001时,根据以上公式可得[X]反= 01001;当X=-1001时,根据以上公式可得[X]反= (25-1)+X= (100000-1)+(-1001)= 11111-1001=10110 同样,整数“0”的反码也有两种形式,即00…0和11…1。

128的二进制有原码反码和补码 (1)

第一次修订 2009-5-6 14:11 --------------------- 1.模的概念(我只讲个例子,具体的可以查数学中的 "同余模") 在日常生活中,有许多化减为加的例子。例如,时钟是逢12进位,12点也可看作0点。 当将时针从10点调整到5点时有以下两种方法: 1.将时针逆时针方向拨5格,相当于做减法: 10-5=5 2.将时针顺时针方向拨7格,相当于做加法:10+(12-5)=12+5=5 (模为 12) 2.模的运用(采用模得到补码) 1.补码的得来:是为了让负数变成能够加的正数,so,负数的补码=模-负数的绝对值 比如:-1 补码:1111 1111(10000 0000 -1得来) 当一个数要减1的时候,可以直接加 1111 1111 2.原码的得来:(负数的原码,直接把对应正数的最高位改为1) 原码能够直观的表示一个负数(能直观的把真值显示出来,如 -1为1000 0001 其中最高位表示符号位,不进行算术计算) 3.总结:补码相加,到第9位才舍弃(模10000 0000) 原码相加,到第8位舍弃(模1000 0000) 反码相加,到第8位舍弃(模1000 0000) 3.原码和补码之间转换: 1.补码=原码减1,再取反(便于理解) 或补码= 反码+1(便于描述和推理) 2.演示:补码=原码减1,再取反 如-1的原码1000 0001-->1000 0000(减1后)-->1111 1111(取反后)补码 3.演示:补码= 反码+1) 如-1的原码 1000 0001-->1111 1110(反码)-->1111 1111(加1)补码 4.重点:(特别是在有进位的时候) 原码和反码的最高位是符号位,不参加算术运算,模为1000 0000(比补码少一个0) 而补码所有位都可以相加,模为10000 0000(最高位不是符号位,补码是通过模减去负数绝对值得到的) 5.推断-128的原码和补码(用补码= 反码+1) 1.关于原码1000 0000,表示的是-0,还是-128呢?(答案是-128而不是-0) 1.先看看原码的概念吧:正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值 2.0是负数吗?0既不是正数也不是负数,那么它的符号位到底是0还是1呢?(0的符号位为0,不能为1)

什么是原码反码补码

什么是原码反码补码 1100110011 原 1011001100 反除符号位,按位取反 1011001101 补除符号位,按位取反再加1 正数的原反补是一样的 ◆一个正数的补码和其原码的形式相同。 如果定义了一个整型变量i: int i;/*定义为整型变量*/ i=lO;/*给i赋以整数10*/ 十进制数10的二进制形式为1010,在微机上使用的C编译系统,每一个整型变量在内存中占2个字节。 图2.2(a)是数据存放的示意图。图2.2(b)是数据在内存中实际存放的情况。 图2.2 ◆求负数的补码的方法是:将该数的绝对值的二进制形式,按位取反再加1。 例如求-10的补码:①取-10的绝对值10;②10的绝对值的二进制形式为1010; ③对1010取反得1111111111110101(一个整数占16位);④再加1得1111111111110110,见图2.3。

整数的16位中,最左面的一位是表示符号的,该位为0,表示数值为正;为1 则数值为负。 北桥,南桥是主板上芯片组中最重要的两块了.它们都是总线控制器.他们是总线控制芯片.相对的来讲,北桥要比南桥更加重要.北桥连接系统总线,担负着cpu 访问内存的重任.同时连接这AGP插口,控制PCI总线,割断了系统总线和局部总线,在这一段上速度是最快的.南桥不和CPU连接通常用来作I/O和IDE设备的控制.所以速度比较慢.一般情况下,南桥和北桥中间是PCI总线. 1。南桥和北桥芯片主要区别是什么? 南桥主要是负责IO 北桥用于CPU和内存、显卡、PCI交换数据 2。如何巧妙辨别南桥和北桥芯片? 用功能辨别南桥芯片和北桥芯片: 北桥 它主要负责CPU与内存之间的数据交换,并控制AGP、PCI数据在其内部的传输,是主板性能的主要决定因素。随着芯片的集成度越来越高,它也集成了不少其它功能。如:由于Althon64内部整合了内存控制器;nVidia在其NF3 250、NF4等芯片组中,去掉了南桥,而在北桥中则加入千兆网络、串口硬盘控制等功能。现在主流的北桥芯征的牌子有VIA、NVIDIA及SIS等。 当然这些芯片的好坏并不是由主板生产厂家所决定的,但是主板生产商采取什么样的芯片生产却是直接决定了主板的性能。如:同样是采用VIA的芯片,性能上则有KT600>KT400A>KT333>KT266A等。目前主流的AMD平台上,可选的芯片组有:KT600、NF2、K8T800、NF3等;对于INTEL平台,则有915、865PE、PT880、845PE、848P等。 南桥 南桥芯片主要是负责I/O接口等一些外设接口的控制、IDE设备的控制及附加功能等等。常见的有VIA的8235、8237等;INTEL的有CH4、CH5、CH6等;nVIDIA 的MCP、MCP-T、MCP RAID等。在这部分上,名牌主板与一般的主板并没有很大的差异,但是名牌主板凭着其出色的做工,还是成为不少人的首选。而不排除一部分质量稍差的主板为了在竞争中取得生存,可能会采用功能更强的南桥以求在功能上取胜。 用芯片在主版上的位置辨别南桥芯片和北桥芯片: 北桥芯片就是位于和CPU插槽附近的一块芯片,其上面一般都覆盖了散热片

计算机组成原理第六章答案

1. 写出下列各数的原码、反码、补码、移码(用8位二进制表示),其中MSB是最高位(符号位),LSB是最低位。如果是小数,则小数点在MSB之后;如果是整数,则小数点在LSB之后。 (1)-59/64 (2)27/128 (3)-127/128 (4)用小数表示-1 (5)用整数表示-1 (6)-127 (7)35 (8)-128 2. 设[x]补=x0.x1x2x3x4,其中x i取0或1,若要使x>-0.5,则x0、x1、x2、x3、x4的取值应满足什么条件? 3. 若32位定点小数的最高位为符号位,用补码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为;若32位定点整数的最高位为符号位,用原码表示,则所能表示的最大正数为,最小正数为,最大负数为,最小负数为。 4. 若机器字长为32位,在浮点数据表示时阶符占1位,阶码值占7位,数符占1位,尾数值占23位,阶码用移码表示,尾数用原码表示,则该浮点数格式所能表示的最大正数为,最小正数为,最大负数为,最小负数为。 5. 某机浮点数字长为18位,格式如图2.35所示,已知阶码(含阶符)用补码表示,尾数(含数符)用原码表示。 (1)将(-1027)10表示成规格化浮点数; (2)浮点数(0EF43)16是否是规格化浮点数?它所表示的真值是多少? 图2.35 浮点数的表示格式 6. 有一个字长为32位的浮点数,格式如图2.36所示,已知数符占1位;阶码占8位,用移码表示;尾数值占23位,尾数用补码表示。 图2.36 浮点数的表示格式 请写出:

(1)所能表示的最大正数; (2)所能表示的最小负数; (3)规格化数所能表示的数的范围。 7. 若浮点数x的IEEE754标准的32位存储格式为(8FEFC000)16,求其浮点数的十进制数值。 8. 将数(-7.28125)10转换成IEEE754标准的32位浮点数的二进制存储格式。 9. 已知x=-0.x1x2…x n,求证:[x]补=+0.00…01。 10. 已知[x]补=1.x1x2x3x4x5x6,求证:[x]原=+0.000001。 11. 已知x和y,用变形补码计算x+y,同时指出运算结果是否发生溢出。 (1)x=0.11011 y=-0.10101 (2)x=-10110 y=-00011 12. 已知x和y,用变形补码计算x-y,同时指出运算结果是否发生溢出。 (1)x=0.10111 y=0.11011 (2)x=11011 y=-10011 13. 已知[x]补=1.1011000,[y]补=1.0100110,用变形补码计算2[x]补+1/2[y]补=?,同时指出结果是否发生溢出。 14. 已知x和y,用原码运算规则计算x+y,同时指出运算结果是否发生溢出。 (1)x=0.1011,y=-0.1110 (2)x=-1101,y=-1010 15. 已知x和y,用原码运算规则计算x-y,同时指出运算结果是否发生溢出。 (1)x=0.1101,y=0.0001 (2)x=0011,y=1110 16. 已知x和y,用移码运算方法计算x+y,同时指出运算结果是否发生溢出。 (1)x=-1001,y=1101 (2)x=1101,y=1011

关于移码的概念

4.移码:移码只用于表示浮点数的阶码,所以只用于整数。 ①移码的定义:设由1位符号位和n位数值位组成的阶码,则[X]移=2n + X -2n≤X ≤ 2n 例如:X=+1011 [X]移=11011 符号位“1”表示正号 X=-1011 [X]移=00101 符号位“0”表示负号 ②移码与补码的关系:[X]移与[X]补的关系是符号位互为反码, 例如:X=+1011 [X]移=11011 [X]补=01011 X=-1011 [X]移=00101 [X]补=10101 ③移码运算应注意的问题: ◎对移码运算的结果需要加以修正,修正量为2n ,即对结果的符号位取反后才是移码形式的正确结果。◎移码表示中,0有唯一的编码——1000…00,当出现000…00时(表示-2n),属于浮点数下溢。 一:对于正数,原码和反码,补码都是一样的,都是正数本身。 对于负数,原码是符号位为1,数值部分取X绝对值的二进制。 反码是符号位为1,其它位是原码取反。 补码是符号位为1,其它位是原码取反,未位加1。 也就是说,负数的补码是其反码未位加1。 移码就是将符号位取反的补码 1011 原码:01011 反码:01011 //正数时,反码=原码 补码:01011 //正数时,补码=原码 移码:11011 //原数+10000 -1011 原码:11011 反码:10100 //负数时,反码为原码取反 补码:10101 //负数时,补码为原码取反+1 移码:00101 //原数+10000 0.1101 原码:0.1101 反码:0.1101 //正数时,反码=原码

补码:0.1101 //正数时,补码=原码 移码:1.1101 //原数+1 -0.1101 原码:1.1101 反码:1.0010 //负数时,反码为原码取反 补码:1.0011 //负数时,补码为原码取反+1 移码:0.0010 //原数+1 0 的原码 +0:0000 0000 -0 :1000 0000 0的补码 +0:0000 0000 -0:0000 0000 0的移码(补码符号位取反) +0&-0:1000 0000 二:在计算机中,实际上只有加法运算,减法运算也要转换为加法运算, 乘法转换为加法运算,除法转换为减法运算。 三:在计算机中,对任意一个带有符号的二进制,都是按其补码的形式进行运算和存储的。 之所以是以补码方式进行处理,而不按原码和反码方式进行处理,是因为在对带有符号位的原码和反码进行运算时,计算机处理起来有问题。 而按补码方式,一方面使符号位能与有效值部分一起参加运算,从而简化运算规则. 另一方面使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计 四:补码加、减运算公式 1):补码加法公式 [X+Y]补=[X]补+ [Y]补 2):补码减法公式 [X-Y]补= [X]补-[Y]补= [X]补+ [-Y]补 其中:[-Y]补称为负补,求负补的办法是:对补码的每一位(包括符合位)求反,且未位加1.

2.1各数原码、反码、补码和移码见下表

2.2 27/64=00011011/01000000=0.0110110=0.11011×2-1 规格化浮点表示为:[27/64]原=101,011011000 [27/64]反=110,011011000 [27/64]补=111,011011000 同理:--27/64=--0.11011×2-1 规格化浮点表示为:[27/64]原=101,111011000 [27/64]反=110,100100111 [27/64]补=111,100101000 2.3 模为:29=1000000000 2.4 不对,8421码是十进制的编码 2.5浮点数的正负看尾数的符号位是1还是0 浮点数能表示的数值范围取决于阶码的大小。 浮点数数值的精确度取决于尾数的长度。 2.6 1)不一定有N1>N2 2)正确 2.7 最大的正数:0111 01111111 十进制数:(1-2-7)×27最小的正数:1001 00000001 十进制数:2-7×2-7 最大的负数:1001 11111111 十进制数:--2-7×2-7 最小的负数:0111 10000001 十进制数:--(1-2-7)×27 2.8 1)[x]补=00.1101 [y]补=11.0010 [x+y]补=[x]补+[y]补=11.1111无溢出 x+y= -0.0001 [x]补=00.1101 [--y]补=00.1110 [x-y]补=[x]补+[--y]补=01.1011 正向溢出 2)[x]补=11.0101 [y]补=00.1111 [x+y]补=[x]补+[y]补=00.0100 无溢出 x+y= 0.0100 [x]补=11.0101 [--y]补=11.0001

原码补码和反码的具体定义

原码补码和反码的具体定义 数在计算机中是以二进制形式表示的。 数分为有符号数和无符号数。 原码、反码、补码都是有符号定点数的表示方法。 一个有符号定点数的最高位为符号位,0是正,1是副。以下都以8位整数为例, 原码就是这个数本身的二进制形式。 例如 0000001 就是+1 1000001 就是-1 正数的反码和补码都是和原码相同。 负数的反码是将其原码除符号位之外的各位求反 [-3]反=[10000011]反=11111100 负数的补码是将其原码除符号位之外的各位求反之后在末位再加1。 [-3]补=[10000011]补=11111101 一个数和它的补码是可逆的。

为什么要设立补码呢? 第一是为了能让计算机执行减法: [a-b]补=a补+(-b)补 第二个原因是为了统一正0和负0 正零:00000000 负零:10000000 这两个数其实都是0,但他们的原码却有不同的表示。 但是他们的补码是一样的,都是00000000 特别注意,如果+1之后有进位的,要一直往前进位,包括符号位!(这和反码是不同的!) [10000000]补 =[10000000]反+1 =11111111+1 =(1)00000000 =00000000(最高位溢出了,符号位变成了0) 有人会问 10000000这个补码表示的哪个数的补码呢? 其实这是一个规定,这个数表示的是-128

所以n位补码能表示的范围是 -2^(n-1)到2^(n-1)-1 比n位原码能表示的数多一个 又例: 1011 原码:01011 反码:01011 //正数时,反码=原码 补码:01011 //正数时,补码=原码 -1011 原码:11011 反码:10100 //负数时,反码为原码取反 补码:10101 //负数时,补码为原码取反+1 0.1101 原码:0.1101 反码:0.1101 //正数时,反码=原码 补码:0.1101 //正数时,补码=原码 -0.1101 原码:1.1101

原码反码补码及运算

原码,反码,补码及运算 一、定义 1.原码 正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。 【例2.13】当机器字长为8位二进制数时: X=+1011011 [X]原码=01011011 Y=+1011011 [Y]原码=11011011 [+1]原码=00000001 [-1]原码=10000001 [+127]原码=01111111 [-127]原码=11111111 原码表示的整数范围是: -(2n-1-1)~+(2n-1-1),其中n为机器字长。 则:8位二进制原码表示的整数范围是-127~+127 16位二进制原码表示的整数范围是-32767~+32767 2.反码 对于一个带符号的数来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。 【例2.14】当机器字长为8位二进制数时: X=+1011011 [X]原码=01011011 [X]反码=01011011 Y=-1011011 [Y]原码=11011011 [Y]反码=10100100 [+1]反码=00000001 [-1]反码=11111110 [+127]反码=01111111 [-127]反码=10000000 负数的反码与负数的原码有很大的区别,反码通常用作求补码过程中的中间形式。反码表示的整数范围与原码相同。 3.补码 正数的补码与其原码相同,负数的补码为其反码在最低位加1。 引入补码以后,计算机中的加减运算都可以统一化为补码的加法运算,其符号位也参与运算。 【例2.15】(1)X=+1011011 (2)Y=-1011011 (1)根据定义有:[X]原码=01011011 [X]补码=01011011 (2)根据定义有:[Y]原码=11011011 [Y]反码=10100100 [Y]补码=10100101 补码表示的整数范围是-2n-1~+(2n-1-1),其中n为机器字长。 则:8位二进制补码表示的整数范围是-128~+127(-128 表示为10000000,无对应的原码和反码)16位二进制补码表示的整数范围是-32768~+32767 当运算结果超出这个范围时,就不能正确表示数了,此时称为溢出。 所以补码的设计目的是: ⑴使符号位能与有效值部分一起参加运算,从而简化运算规则. ⑵使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计 4.补码与真值之间的转换 正数补码的真值等于补码的本身;负数补码转换为其真值时,将负数补码按位求反,末位加1,即可

(数电知识)原码、反码与补码知识

2.1 原码、反码与补码 在计算机内的数(称之为“机器数”)值有3种表示法:原码、反码和补码。所谓原码就是带正、负号的二进制数,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。反码表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。补码表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。由此可见,这三种表示法中,关键是负数的表示方式不一样。 2.2.1 正负数表示、定点数与浮点数 在计算机内,通常把1个二进制数的最高位定义为符号位,用“0”表示正数,“1”表示负数;其余位表示数值。 规定小数点位置固定不变的数称为“定点数”;小数点的位置不固定,可以浮动的数称为“浮点数”。 2.2.2 原码 原码表示法是定点数的一种简单的表示法。用原码表示带符号二进制数时,符号位用0表示正,1表示负;数值位保持不变。原码表示法又称为符号-数值表示法。 1. 小数原码表示法 设有一数为x,则原码表示可记作[x]原(下标表示)。例如,X1= +1010110 ;X2= -1001010 原码表示数的范围与二进制位数有关。设二进制小数X=±0.X1X2…Xm,则小数原码的定义如下: 例如:X=+0.1011时,根据以上公式可得[X]原=0.1011;X=-0.1011时,根据以上公式可得[X]原= 1-(-0.1011)=1.1011=1.1011 当用8位二进制来表示小数原码时,其表示范围为:最大值为0.1111111,其真值约为(0.99)10 ;最小值为1.1111111,其真值约为(-0.99)10。根据定义,小数“0”的原码可以表示成0.0…0或1.0…0。 2. 整数原码表示法 整数原码的定义如下: 例如:X=+1101时,根据以上公式可得[X]原=01101;X=-1101时,根据以上公式可得[X]原=24-(-1101)=10000+1101=11101 当用8位二进制来表示整数原码时,其表示范围为:最大值为01111111,其真值为(127)10 ;最小值为11111111,其真值为(-127)10 。同样,整数“0”的原码也有两种形式,即00…0和10…0。 2.2.3 反码 用反码表示带符号的二进制数时,符号位与原码相同,即用0表示正,用1表示负;数值位与符号位相关,正数反码的数值位和真值的数值位相同;而负数反码的数值位是真值的数值位按位变反。 1. 小数反码表示法 设二进制小数X=±0.x1x2…xm,则其反码定义为: 例如,X=+0.1011时,根据以上公式可得[X]反=0.1011;当X=-0.1011时,根据以上公式可得[X]反=2-2-4+X=10.0000-0.0001-0.1011=1.0100。根据定义,小数“0”的反码有两种表示形式,即0.0…0和1.1…1。 2. 整数反码表示法 设二进制整数X=±Xn-1Xn-2…X0,则其反码定义为: 例如,X=+1001时,根据以上公式可得[X]反= 01001;当X=-1001时,根据以上公式可得[X]反= (25-1)+X= (100000-1)+(-1001)= 11111-1001=10110 同样,整数“0”的反码也有两种形式,即00…0和11…1。

微处理器原理与应用-原码,反码,补码等的习题应用

信息科学与工程学院 2017-2018学年第二学期 实验报告 课程名称:微处理器原理与应用 实验名称:原码,反码,补码等的习题应用 专业班级电子信息 学生学号 学生姓名 实验时间 2018年3月日

实验报告 【实验目的】 通过本次实验习题课掌握原码补码反码移码的概念以及应用。 【实验要求】 认真完成本章实验习题。 【实验具体内容】 完成关于原码,补码和反码的习题。 【实验开始】 一、选择题(如果为计算题,写出简要的计算过程) 1、一个四位二进制补码的表示范围是(B) A、0~15 B、-8~7 C、-7~7 D、-7~8 2、十进制数-48 用补码表示为(B) A、10110000 B、11010000 C、11110000 D、11001111 3、如果X 为负数,由[x]补求[-x]补是将(D) A、[x]补各值保持不变 B、[x]补符号位变反,其他各位不变 C、[x]补除符号位外,各位变反,末位加1 D、[x]补连同符号位一起各位变反,末位加1 4、机器数80H 所表示的真值是-128,则该机器数为(C)形式的表示。 A、原码 B、反码 C、补码 D、移码 5、在浮点数中,阶码、尾数的表示格式是(A)。 A、阶码定点整数,尾数定点小数 B、阶码定点整数,尾数定点整数 C、阶码定点小数,尾数定点整数 D、阶码定点小数,尾数定点小数

6、已知[x]补=10110111,[y]补=01001010,则[ x–y ]补的结果是(A)。 A、溢出 B、01101010 C、01001010 D、11001010 7、某机字长8位,含一位数符,采用原码表示,则定点小数所能表示的非零最小正数为(D) A、2-9 B、2-8 C、-1 D、2-7 8、下列数中最小的数是(C) A、[10010101]原 B、[10010101]反 C、[10010101]补 D、[10010101]2 9、8位补码表示的定点整数的范围是(B) A、-128~+128 B、-128~+127 C、-127~+128 D、-127~+127 10、已知X 的补码为10110100,Y 的补码为01101010,则X-Y 的补码为(C) A、01101010 B、01001010 C、11001010 D、溢出 11、将-33 以单符号位补码形式存入8 位寄存器中,寄存器中的内容为(B) A、DFH B、A1H C、5FH D、DEH 12、在机器数的三种表示形式中,符号位可以和数值位一起参加运算的是(D) A、原码 B、补码 C、反码 D、反码、补码 13、“溢出”一般是指计算机在运算过程是产生的(C)。 A、数据量超过内存容量 B、文件个数超过磁盘目录区规定的范围 C、数据超过了机器的位所能表示的范围 D、数据超过了变量的表示范围 14、设有二进制数X=-1101110,若采用8 位二进制数表示,则[X]补的结果是(D)

原码反码补码

1.原码表示法 (1)整数原码的定义为: 式中x为真值,n为整数的位数。 小数原码的定义为 注:正数的原码是把符号位改为‘0’,负数的原码把符号位改为‘1’即可。 例:当x=+0.1101时,[x]原=0.1101 当x=-0.1101时,[x]原=1-(-0.1101)=1.1101 (2)原码的表数范围。 对于定点整数: 一个n+1位原码能表示的最大正数为01…11,即2n-1;能表示的最小数为绝对值最大的负数111…1,即-(2n-1)。所以原码能表示的数值范围为: -(2n-1) ≤ x≤ 2n-1。 例:字长为8位的定点整数,x的原码的表示范围为(-127 ,127). 对于定点小数: 一个n+1位定点小数原码能表示的最大正数为0.1…11,即1-2-n;能表示的最小数为绝对值最大的负数为1.11…1,即-(1-2-n)。定点小数原码的数值范围为: -(1-2-n) ≤ x≤ 1-2-n。 2.反码表示法 例:正数的反码和原码一样,负数的反码把原码除符号位以外的所有位取反。 例:字长为8位的定点整数,x的反码的表示范围为(-127 ,127). 3.补码表示法 (1)整数补码的定义为: 式中x为真值,n为整数的位数。

小数补码的定义为 注:正数的补码是和原码相同,负数的补码把原码除符号位以外的所有为取反(反码),再加‘1’ 例:当x=+0.1101时,[x]原=0.1101,[x]补=0.1101 当x=-0.1101时,[x]原=1.1101,[x]补=1.0010+1=1.0011 [x]补=2+x=10.0000-0.1101=1.0011 (2)补码的表数范围。一个n+1位整数补码能表示的最大数是011…1,即2n-1;能表示的最小数为100…0,即-2n。所以它能表示的数值范围是:-2n≤ x≤ 2n-1 例:字长为8位的定点整数,x的补码的表示范围为(-128 ,127). 一个n+1位小数补码能表示的最大数是0.11…1,即1-2-n;能表示的最小数为1.00… 0,即-1。所以它能表示的数值范围是:-1≤ x ≤ 1-2-n 例:字长为8位的定点小数,x的补码的表示范围为(-1,1-1/128). 4.移码表示法 (1)整数移码的定义为: [x]移=2n+x (2n>x≥-2n) 式中x为真值,n为整数的位数。注:移码就是把真值的补码的符号位取反,即将补码的符号位由“0”改为“1”,或从“1”改为“0” 例:当x=+0.1101时,[x]原=0.1101,[x]补=0.1101,[x]移=1.1101 当x=-0.1101时,[x]原=1.1101,[x]补=1.0011,[x]移=0.0011 (2)移码的表示的数值范围与补码能表示数值范围相同是:-2n≤ x≤2n-1 例:字长为8位的定点整数,x的移码的表示范围为(-128 ,127). 例:“0”的原码、反码、补码表示法。 ①[+0.0000]原=0.0000 [-0.0000]原=1-(0.0000)=1.0000 ② [+0.0000]反=0.0000 [-0.0000]反=(10.0000-0.0001)-0.0000=1.1111

相关文档
相关文档 最新文档