无符号数、有符号数、原码、反码、补码——数据在计算机内部的表示
数字逻辑与计算机组成原理:第二章 数据的表示与运算

第二章 数据的表示与运算
第一节 数的表示
一、无符号数和有符号数
1、无符号数:
没有符号的数,寄存器中的每一位都可用 来存放数据
机器字长为n位,无符号数的表示范围 为0~2n-1
反映无符号数的表示范围
8位 16 位
0 ~ 255 0 ~ 65535
有两种常用的无符号表示法: ◆ 非负数码:表示0或一个正数
(1) 定义
整数
0,x
2n > x ≥ 0
[x]反 = ( 2n+1 – 1) + x 0 ≥ x > 2n(mod 2n+1 1)
x 为真值
n 为整数的位数
如 x = +1101
x = 1101
[x]反 = 0,1101
[x]反 = (24+1 1) 1101 = 11111 1101
用 逗号 将符号位
= 1,0010
和数值部分隔开
小数 x
[x]反 = ( 2 – 2-n) + x
1>x≥ 0 0 ≥ x > 1(mod 2 2-n)
x 为真值 n 为小数的位数
如 x = + 0.1101
x = 0.1010
[x]反 = 0.1101
[x]反 = (2 2-4) 0.1010
= 1.1111 0.1010
有符号小数: +0.1011,在机器中表示为
-0.1011,在机器中表示为
第一节 数的表示
一、无符号数和有符号数 2、有符号数
有符号整数: +1101,机器中表示为
-1101, 机器中表示为
第一节 数的表示
一、无符号数和有符号数
数值型数据在计算机中的表示

n位二进制补码的表示范围: - 2n-1 ≤ N ≤ 2n-1-1
2.1.2 数值型数据在计算机中的表示 补码的加法和减法 求补运算 :对一个二进制数按位求反、末位加一 [X]补码 [-X]补码 [X]补码 加法规则:[X+Y]补码 = [X]补码 + [Y]补码 减法规则:[X-Y]补码 = [X]补码 + [-Y]补码 补码减法可转换为补码加法 例:
2.1.2 数值型数据在计算机中的表示
3. 计算机中实数的浮点表示
2.1.2 数值型数据在计算机中的表示 4. IEEE754标准 32位、64位浮点数标准格式
无论是32位浮点数还是64位浮点数,规定基数R=2。 32位浮点数中:S——浮点数的符号位,占1位,安排在最高位, S=0表示正数,S=1表示负数。 M——尾数,放在低位部分,占23位,用小数表示; E——阶码,占8位,其中包含阶码的符号。
+
64 (-46) 18
+
0100 0000 1101 0010 0001 0010
2.1.2 数值型数据在计算机中的表示
3. 计算机中实数的浮点表示
浮点表示法:把一个数的有效数字和数的范围在计算机的 一个存储单元中分别予以表示,这种把数的范围和精度分别 表示的方法,数的小数点位置随比例因子的不同而在一定范 围内自由浮动。
任意一个十进制数 N 可以写成
N=10E · M
2.1.2 数值型数据在计算机中的表示
3. 计算机中实数的浮点表示
在计算机中一个任意进制数 N 可以写成
N=Re.m
m :尾数,是一个纯小数。 e :比例因子的指数,称为浮点的指数,是浮点数的阶码,是一 个整数,指明了小数点在数据中的位置。 R :比例因子的基数,对于二进计数值的机器是一个常数,一般 规定R 为2,8或16。 一个机器浮点数由阶码和尾数及其符号位组成。
串讲及习题解答

内部数据
存储器 内部程序
外部程序 存储器 (ROM)
外部数据 存储器 (RAM)
存储器
8XX51
MCS-51存储器物理结构
从逻辑上看,MCS-51有三个存储器空间: 片内数据存储器、片外数据存储器 片内、片外统一编址的程序存储器 MCS-51的存储器逻辑结构如图1-2所示。
有符号数有原码、反码和补码三种表示法。
1.原码 数值部分用其绝对值,正数的符号位用“0”表示,负数 的符号位用“1”表示。如: X1=+5=+00000101B [X1]原=00000101B X2=-5=-00000101B [X2]原=10000101B
符号位
8位原码数的范围为FFH~7FH(-127~127)。原码数00H和 80H的数值部分相同、符号位相反,它们分别为+0和-0。16 位原码数的数值范围为FFFFH~7FFFH(-32767~32767)。 原码数0000H和8000H的数值部分相同、符号位相反,它们 分别为+0和-0。 原码表示简单易懂,而且与真值的转换方便。但若是两 个异号数相加,或两个同号数相减,就要做减法。为了把 减运算转换为加运算,从而简化计算机的结构,就引进了 反码和补码。
OV:溢出标志 反映补码运算的运算结果有无溢出 有溢出 OV=1,无溢出OV=0。 -:无效位。 P:奇偶标志 运算结果有奇个“1”,P=1; 运算结果有偶个“1”,P=0。 影响标志位的指令及其影响方式见第2章。 SP—堆栈指针。8XX51单片机的堆栈设在片内RAM, 对堆栈的操作包括压入(PUSH)和弹出(POP)两种方式, 并且遵循后进先出的原则,但在堆栈生成的方向上,与 8086正好相反8XX51单片机的堆栈操作遵循先加后压,先弹 后减的顺序,按字节进行操作。
教案-计算机组成原理(DOC)

计算机组成原理教案(数字媒体专业)第一章计算机系统概论内容简介:计算机系统的层次结构,冯·诺伊曼计算机的硬件结构和主要功能,计算机的工作步骤以及计算机的主要技术指标。
教学目标:了解计算机系统的层次结构;了解冯·诺伊曼计算机的特点及硬件构成;理解计算机的工作步骤,了解计算机的主要技术指标的含义及其对计算机的影响。
教学重点和难点:虚拟机的概念;计算机的硬件构成;计算机的工作步骤。
教学媒体和教学方法:使用幻灯片在多媒体教室进行教学;教学中采用讲授与讨论相结合的方法。
教学过程:一、计算机系统简介1.计算机的软硬件概念(1)硬件(2)软件(3)软硬件的关系2.计算机系统的层次结构(1)虚拟机的概念(2)各层虚拟机及与真实机器的层次关系3.计算机的基本组成(1)冯·诺伊曼计算机的特点(2)计算机硬件结构,总线的构成。
讨论、分析直连结构的问题,提出总线思想,并简单介绍总线结构。
(3)计算机的工作步骤提出计算机解决问题的基本步骤计算机基本构成部件的介绍(运算器、存储器、控制器)以计算ax2+bx+c为例分析计算机工作的过程4.计算机的主要技术指标(1)机器字长计算机同时处理的二进制位机器字长与数据总线宽度、存储字长的关系(2)存储容量存储容量的单位主存容量辅存容量(3)运算速度几种计算运算速度的方法并对它们进行比较运算速度的表示单位第二章计算机的发展及应用内容简介:计算机的发展史;计算机的应用领域;计算机的发展展望。
教学目标:了解计算机的产生和发展以及发展思路;了解计算机的应用领域;了解计算机的发展趋势。
教学重点和难点:计算机的应用领域。
教学媒体和教学方法:使用幻灯片在多媒体教室进行教学;教学中采用讲授与讨论相结合的方法。
教学过程:一、计算机的发展史1.计算机的产生和发展现代计算机的研究工作第一台电子计算机的产生计算机的发展阶段计算机的发展规律计算机的发展趋势2.微型计算机的出现和发展微型计算机的发展阶段微型计算机的发展带来的工作、学习、生活方式的变化3.软件技术的兴起和发展软硬件的融合,简介嵌入式发展方向二、计算机的应用1.科学计算和数据处理通过ENIAC进行计算的一个案例,直观体会计算机的计算能力2.工业控制和实时控制3.网络技术应用4.虚拟现实介绍虚拟现实技术的一些应用5.办公自动化和管理信息系统6.多媒体技术7.人工智能三、计算机发展的展望第三章系统总线内容简介:总线的概念;总线的分类;总线的特性和性能指标;总线结构;总线控制。
为什么计算机用补码存储数据?

为什么计算机用补码存储数据?在计算机内部,所有信息都是用二进制数串的形式表示的。
整数通常都有正负之分,计算机中的整数分为无符号的和带符号的。
无符号的整数用来表示0和正整数,带符号的证书可以表示所有的整数。
由于计算机中符号和数字一样,都必须用二进制数串来表示,因此,正负号也必须用0、1来表示。
通常我们用最高的有效位来表示数的符号(当用8位来表示一个整数时,第8位即为最高有效位,当用16位来表示一个整数时,第16位即为最高有效位。
)0表示正号、1表示负号,这种正负号数字化的机内表示形式就称为“机器数”,而相应的机器外部用正负号表示的数称为“真值”。
将一个真值表示成二进制字串的机器数的过程就称为编码。
无符号数没有原码、反码和补码一说。
只有带符号数才存在不同的编码方式。
带符号整数有原码、反码、补码等几种编码方式。
原码即直接将真值转换为其相应的二进制形式,而反码和补码是对原码进行某种转换编码方式。
正整数的原码、反码和补码都一样,负数的反码是对原码的除符号位外的其他位进行取反后的结果(取反即如果该位为0则变为1,而该位为1则变为0的操作)。
而补码是先求原码的反码,然后在反码的末尾位加1 后得到的结果,即补码是反码+1。
IBM-PC中带符号整数都采用补码形式表示。
(注意,只是带符号的整数采用补码存储表示的,浮点数另有其存储方式。
)采用补码的原因或好处如下,采用补码运算具有如下两个特征:1)因为使用补码可以将符号位和其他位统一处理,同时,减法也可以按加法来处理,即如果是补码表示的数,不管是加减法都直接用加法运算即可实现。
2)两个用补码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。
这样的运算有两个好处:1)使符号位能与有效值部分一起参加运算,从而简化运算规则。
从而可以简化运算器的结构,提高运算速度;(减法运算可以用加法运算表示出来。
)2)加法运算比减法运算更易于实现。
使减法运算转换为加法运算,进一步简化计算机中运算器的线路设计。
无符号数、有符号数、原码、反码、补码——数据在计算机内部的表示

数据在计算机内部的表示与存储作者:刘英皓2013/4/17 今天在做单片机实验的时候,突然对一个问题产生了浓厚的兴趣:数据在计算机内部是怎么表示的?晚上查阅了大量的资料,终于把其中的玄机弄明白了。
资料来源甚广,在此就不一一声明了,感谢!!数据是什么?它是用来表示信息的。
是信息的载体。
比如数值、文字、语言、图形、影像等都是不同形式的数据。
而在计算机中,无论是数值型数据还是非数值型数据,它们都被表示成了0和1。
既然都变成了0和1,那计算机怎么区别这些不同的信息呢?别担心,它们各在有各自的编码规则。
非数值型数据的编码主要有ASCII 码和汉字编码。
这里不深究。
数值型数据:它主要有两种形式,有符号数和无符号数1、有符号数和无符号数它们的定义估计你都听腻了,我就不重复了,我只强调两点:a.计算机不区分有符号数和无符号数。
b.只有有符号数才有原码、反码和补码。
2、原码、反码和补码还是两点:a.正数的原码、反码和补码都一样。
b.负数的反码为原码除符号位的按位取反,补码为反码加1.注意两点:b1.反码1111 1111的补码是0000 0000.b2.补码1000 0000没有对应的原码和反码,它表示-128,这是规定3、计算机存储单元中的数据这个要分两种情况:a.无符号数:直接以对应的二进制表示。
b.有符号数:补码形式表示,无论是计算还是存取。
比如在内存单元中有一个数据为FEH,那么它到底是表示什么?254还是-2?没关系,你说是什么就是什么。
因为计算机是不会区分这个数是有符号数还是无符号数的。
在你写程序的时候,指定这个量是有符号的,FEH就是一个补码,可以计算得它的真值就是-2,如果指定它是无符号的,那么它就是254。
不同的形式在程序中便会有不同的体现。
要注意的是在计算中不要超出了数值的范围,以免发生错误。
如有疑问请联系:yinghao1991@。
移位_数据的表示形式

数据表示数据在内存中都是用补码表示的,正数的原码、反码、补码都是一样的,就是原码本身。
负数的补码就是反码加1。
无符号数:就是一般的表示形式,没有符号位,9:0000 0000 0000 0000 0000 0000 0000 1001。
有符号数:最高位是符号位,1表示负数,0表示正数。
剩下部分就是补码表示。
-9:1111 1111 1111 1111 1111 1111 1111 0111。
已知负数的二进制表示形式(补码表示),如何求其大小了?:去掉最高符号位,将剩余部分求补码,然后将所得到的正数加上负号就行了。
将此表达式最高位,符号位1去掉,剩下的就是补码:111 1111 1111 1111 1111 1111 1111 0111,对此部分求补码得:000 0000 0000 0000 0000 0000 0000 1001,也就是9,然后加上负号,所以该式表示的就是-9。
移位运算无符号数移位:左移:左边丢弃,右边补0。
右移:左边补0,右边丢弃。
有符号数移位:左移:左边丢弃,右边补0。
右移:左边补符号位,右边丢弃。
特别要注意有符号数的移位,当左移时,左边丢弃,所以符号位会被丢弃,因此,正数可能变成负数,负数可能变成正数;当右移时,左边的丢弃,右边的最高位补符号位(这个跟编译器有关)。
下面对上述分析作总结:一:左移运算对于有符号数和无符号数都是一样的:左边丢弃,右边补0。
二:无符号数的右移:右边丢弃,左边补0。
而有符号数的右移:右边丢弃,从左边移入新位时,可以选择两种方案。
一是逻辑移位:左边移入的位用0填充;另一种是算数移位:左边移入的位由原先该值的符号位决定,符号位为1,则移入的位为1,符号位为0,则移入的位为0,这样能保证原数的正负形式不变。
这里要特别强调的是:有符号数右移时,到底采用逻辑移位还是算数移位取决于编译器,这个我们可以简单的写一个程序测试一下我们的编译器采用哪一种,VC/S采用的是算数移位。
计算机原码、反码、补码、机器数、真值、有符号数、无符号数等的区分与运算

在计算机的存储器中统一采用二进制数的方式进行数据存储。
而编程中则综合使用二进制、八进制、十进制与十六进制的数据表示方法,程序编译后一般生成十六进制的可烧写文件,而烧写到存储器后最终在存储单元中存放的还是二进制形式。
而二进制又有真值,原码,反码,补码,机器数,有符号数,无符号数,等诸多概念之分。
故下面主要就二进制数(以整数为例,后面提到的数据皆指整数)的存储与运算过程中涉及到的一些概念与规则进行梳理。
讲的主要是在计算机中的,以8位单片机为例,后面以32位ARM单片机指令举例。
1有符号数和无符号数。
数据首先分为有符号数和无符号数。
对于无符号数来说,肯定指的0与正数,无负数之说,自然也无原码、反码、补码之说,一般也不针对于无符号数讨论机器数、真值等概念。
其存储方式与有符号数存储也无特别之处,具体的将在“存储单元中的数据”一节讲述。
有符号数,有正负与0三种,由于在计算机中无法表示负号,或者说用专门的符号表示负号很不方便,于是就采用对正负号进行数值编码的方式,用“0”代表非负数,“1”代表负数。
根据不同的编码方式,对有符号数一般可以有原码、反码、补码三种最常见的编码形式。
2 真值真值就是所表示的数的大小,一般用10进制表征。
3 原码、反码、补码具体概念我就不重复了,只重申下相关结论:a.正数的原码、反码、补码都相同。
b.负数的反码为原码的按位取反(保持符号位不变),补码为反码加1.4 机器数原码、反码、补码都是机器数的一种表示形式,或说都属于机器数。
5 存储单元中的数据(存储单元包括存储器中的存储单元和寄存器)在计算机的存储器的存储单元中的数据均以补码形式存放的,于是在计算机中的数据表示有下面结论:a不使用原码与反码。
但原码与反码可以作为计算真值的中间媒介。
b存储单元中的数据以补码形式存在。
c 数据的存取与运算都以补码形式进行。
d补码就是机器数,机器数就是补码。
解释:掌握一个基本原则——简单,存储单元是个很有原则的家伙,他只管存01序列,才不管该序列是表示指令编码还是数据呢,更不会管是有符号数还是无符号数,也不管是数据的原码、反码还是补码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据在计算机内部的表示与存储
作者:刘英皓
2013/4/17 今天在做单片机实验的时候,突然对一个问题产生了浓厚的兴趣:数据在计算机内部是怎么表示的?晚上查阅了大量的资料,终于把其中的玄机弄明白了。
资料来源甚广,在此就不一一声明了,感谢!!
数据是什么?它是用来表示信息的。
是信息的载体。
比如数值、文字、语言、图形、影像等都是不同形式的数据。
而在计算机中,无论是数值型数据还是非数值型数据,它们都被表示成了0和1。
既然都变成了0和1,那计算机怎么区别这些不同的信息呢?别担心,它们各在有各自的编码规则。
非数值型数据的编码主要有ASCII 码和汉字编码。
这里不深究。
数值型数据:它主要有两种形式,有符号数和无符号数
1、有符号数和无符号数
它们的定义估计你都听腻了,我就不重复了,我只强调两点:
a.计算机不区分有符号数和无符号数。
b.只有有符号数才有原码、反码和补码。
2、原码、反码和补码
还是两点:
a.正数的原码、反码和补码都一样。
b.负数的反码为原码除符号位的按位取反,补码为反码加1.
注意两点:
b1.反码1111 1111的补码是0000 0000.
b2.补码1000 0000没有对应的原码和反码,它表示-128,这是规定
3、计算机存储单元中的数据
这个要分两种情况:
a.无符号数:直接以对应的二进制表示。
b.有符号数:补码形式表示,无论是计算还是存取。
比如在内存单元中有一个数据为FEH,那么它到底是表示什么?254还是-2?没关系,你说是什么就是什么。
因为计算机是不会区分这个数是有符号数还是无符号数的。
在你写程序的时候,指定这个量是有符号的,FEH就是一个补码,可以计算得它的真值就是-2,如果指定它是无符号的,那么它就是254。
不同的形式在程序中便会有不同的体现。
要注意的是在计算中不要超出了数值的范围,以免发生错误。
如有疑问请联系:yinghao1991@。