无符号数、有符号数、原码、反码、补码——数据在计算机内部的表示
微机原理第1章-数制
一个字节的二进制数的位权: 27 26 25 24 23 22 21 20 128 64 32 16 8 4 2 1 (1001 0101)2=(128+16+4+1)10=(149)10
36
一个字节的原码,表示的数据范围为: 11111111~01111111,即-127~+127。
00000111 00000110
+7 +6
00000101 00000100
00000011 00000010 00000001 00000000 10000000 10000001 10000010 10000011 10000100 10000101 10000110 10000111
位权:16 i
表示形式:H 位权 163 4096 162 256
3FC.6H或(3FC.6)16
161 16 160 1 16-1 .0625 16-2 .00390625
3FC.6 =3×162+F×161+C×160+6×16-1
=1020.375
基数为R的R进制: R个基本符号: 0,1,2,…,n 位权:Ri
分析笔算乘法
1010 × 1001 1010 0000 0000 1010 1011010 被乘数 乘 数 部分积
3、带符号的二进制数(原码、反码、补码)
3、带符号的⼆进制数(原码、反码、补码)
1、数值的符号
之前所提到的⼆进制数,没有考虑到符号问题,所指的都是⽆符号数。但实际上数字是有正、负符号的。
以数字6为例,按照习惯的数学表⽰⽅法,正数6⽤+6表⽰,⼆进制为+110;负数6⽤-6表⽰,⼆进制数为-110.但在数字系统中,符号“+”、“-”也要数字化,⼀般将所对应的⼆进制数最⾼位增加多⼀位⽤来设为符号位,⽤“0”表⽰“+”、⽤“1”表⽰“-”。
为了区分⼀个符号数的“+”、“-”符号数字化前后的两种表⽰⽅法,引⼊真值和机器数两个术语。
真值:在⼀个⼆进制数前⾯⽤“+”、“-”表⽰正、负数的这种⼆进制数叫做真值。
机器数:将“+”、“-”符号⽤⼆进制码“0”、“1”表⽰的⼆进制数叫做机器数。数据最后存到计算机中就是⽤机器数来表⽰的
如下:
+6 -> +110 -> 0110
-6 -> -110 -> 1110
(⼗进制数) (真值)(机器数)
在计算机中最⼩基本的计算单位是字节,1字节=8位⼆进制数,由此可见最后存放到计算机中的机器数是8位⼆进制数,不够补0,符号位占据了1⼀个位置,所以到了最后只有7位数可以使⽤。
在c语⾔中使⽤ unsigned 关键字可以定义⼀个⽆符号的变量,可将变量的存储范围变⼤。
机器数是由符号位+⼆进制数组成的,机器数实际上是个⼤概念,意指这种类型的数据能存进去计算机,机器数在计算机中⼜有三种不同的表⽰⽅法,分别是:原码、补码、反码。下⾯逐个列举
2、原码
将⼆进制数的真值中的正符号⽤0表⽰,负数符号⽤1表⽰,叫做数原码形式,简称原码。
无符号数、有符号数、原码、反码、补码——数据在计算机内部的表示
数据在计算机内部的表示与存储
作者:刘英皓
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。不同的形式在程序中便会有不同的体现。要注意的是在计算中不要超出了数值的范围,以免发生错误。
移位_数据的表示形式
数据表示
数据在内存中都是用补码表示的,正数的原码、反码、补码都是一样的,就是原码本身。负数的补码就是反码加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填充;
计算机原码、反码、补码、机器数、真值、有符号数、无符号数等的区分与运算
在计算机的存储器中统一采用二进制数的方式进行数据存储。而编程中则综合使用二进制、八进制、十进制与十六进制的数据表示方法,程序编译后一般生成十六进制的可烧写文件,而烧写到存储器后最终在存储单元中存放的还是二进制形式。而二进制又有真值,原码,反码,补码,机器数,有符号数,无符号数,等诸多概念之分。故下面主要就二进制数(以整数为例,后面提到的数据皆指整数)的存储与运算过程中涉及到的一些概念与规则进行梳理。讲的主要是在计算机中的,以8位单片机为例,后面以32位ARM单片机指令举例。
1有符号数和无符号数。
数据首先分为有符号数和无符号数。
对于无符号数来说,肯定指的0与正数,无负数之说,自然也无原码、反码、补码之说,一般也不针对于无符号数讨论机器数、真值等概念。其存储方式与有符号数存储也无特别之处,具体的将在“存储单元中的数据”一节讲述。
有符号数,有正负与0三种,由于在计算机中无法表示负号,或者说用专门的符号表示负号很不方便,于是就采用对正负号进行数值编码的方式,用“0”代表非负数,“1”代表负数。根据不同的编码方式,对有符号数一般可以有原码、反码、补码三种最常见的编码形式。
2 真值
真值就是所表示的数的大小,一般用10进制表征。
3 原码、反码、补码
具体概念我就不重复了,只重申下相关结论:
a.正数的原码、反码、补码都相同。
b.负数的反码为原码的按位取反(保持符号位不变),补码为反码加1.
4 机器数
原码、反码、补码都是机器数的一种表示形式,或说都属于机器数。
5 存储单元中的数据(存储单元包括存储器中的存储单元和寄存器)
计算机中数的表示和存储(总结)
计算机中数的表⽰和存储(总结)
⼀、⽆符号数和有符号数
1.⽆符号数
计算机中的数均存放在寄存器中,通常称寄存器的位数为机器字长。所谓的⽆符号数即没有符号的数,在寄存器中的每⼀位均可⽤来存放数值。⽽当存放有符号位时,则留出位置存放“符号”。因此,在机器字长相同时,⽆符号数与有符号数所对应的数值范围是不同的。以机器字长16位为例⼦,⽆符号数的范围为0~(216-1=65535),⽽有符号数的表⽰范围为(-32768=215)~(+32767=215-1)(此数值对应原码表⽰)。机器中的有符号数是⽤补码表⽰的。
2.有符号数
对于有符号数⽽⾔,符号的正负机器是⽆法识别的,⽽在机器中是⽤0,1分别表⽰正,负的,并规定将它放在有效数字的前⾯,这样就组成了有符号数。
把符号“数字化”的数叫做机器数,⽽把带“+”或“-”符号的数叫做真值。⼀旦符号数字化后,符号和真值就形成了⼀种新的编码。有符号数有原码、补码、反码和移码等四种表⽰形式。
2.1 有符号数的编码⽅法-原码表⽰法
原码是机器数中最简单的⼀种表⽰形式,其符号位为0表⽰正数,为1表⽰负数,数值位即真值的绝对值,故原码⼜称作带符号位的绝对值表⽰。
整数原码的定义为
式中x为真值,n为整数的位数。例如,当x=-1110时,[x]原=24-(-1110)=11110
⼩数的原码定义为
例如,当x=-0.1101时,[x]原=1-(-0.1101)=1.1101
当x=0时
[+0.0000]原=0.0000
[-0.0000]原=1-(0.0000)=1.0000
可见[+0]原不等于[-0]原,即原码中的零有两种表⽰形式。
微机原理
例:用补码进行下列运算:(+33)+(+15);(+ 33)+(-15)
解:
(2)补码的减法运算规则是: [X-Y]补=[X]补+[-Y]补 该式表明,求[X-Y]补可以用[X]补与 [-Y]补相 加来实现 [-Y]补是对减数进行求负操作。 一般称已知 [Y]补求得 [-Y]补的过程叫变补或 求负。
3.规格化数与溢出
为了便于浮点数的运算,数采用规格化表示。对尾数规格化作 如下定义: 若mj≠m1,则称尾数M为规格化数;若mj=m1,则称 尾 数 M 为 非 规 格 化 数 。 例 如 , N=2011×0.0010100 , 显 然 尾 数 0.001010为非规格化数。
如果尾数不是规格化数,那么要用移位手段把它变为规格化数。 尾数每左移一位,阶码就减1,尾数每右移一位,阶码就加1,直 至mj≠m1 为止。以左移操作实现尾数的规格化称为左规,以右移 实现规格化称为右规。如上例中的N为非规格化数,则将 0.0010100左移两位后,变成0.1010000,此数已是规格化数,不再 左 移 , 从阶 码 011 中减 去 010 , 得 001。 所以 规 格 化后 的 N应 为 2001×0.1010000。
-2n-1+1≤X≤+2n-1-1
3.反码表示法
反码表示法中,正数的反码和原码相同;负数的反
码可由其原码除符号位,保持不变外,其余各位按位取
计算机中数值的三种表示方法详解:原码,反码,补码
计算机中数值的三种表⽰⽅法详解:原码,反码,补码
计算机中数值的三种表⽰⽅法详解
原码,反码,补码
最近在学习软件评测师的知识,其中涉及到计算机的原码, 反码和补码等知识. 通过⽹上查阅资料,进⾏了深⼊学习,分享给⼤家。本⽂主要从以下⼏点进⾏介绍:如何计算原码,反码,补码?为何要使⽤反码和补码?希望本⽂对⼤家学习计算机基础有所帮助
⼀. 机器数和真值
在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.
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
⼆. 原码, 反码, 补码的基础概念和计算⽅法.
计算机中的符号数有三种表⽰⽅法,即原码、反码和补码。三种表⽰⽅法均有符号位和数值位两部分,符号位都是⽤0表
⽰“正”,⽤1表⽰“负”,⽽数值位,三种表⽰⽅法各不相同。
计算机组成原理第2章 数据的表示方法
十进制转二进制(不考虑符号)
整数部分除2取余
2 2 2 2 1 1 5 2 1 0 1 1 0 1
低 高
小数部分乘2取整
0.625 * 2 1 0 1 0.25 * 2 0.5 * 2 0.0
高
低
除尽为止 (11)10=(1011)2 (11.625)10=(1011.101)2
求得位数满足要求为止 (0.625)10=(0.101)2
• 下面以有权码8421码为例,进行一位BCD码 的加法运算。 1、2+7=9 2、6+8=14 3、9+8=17 0010 0110 1001 0111 1000 1000 1001 1110 修正 10001 修正 0110 0110 10100 10111
2.2 无符号数和有符号数
• 机器数是指数据在计算机内部的二进制编码 形式(有多种)。 • 真值是指原来书写形式表示的数(实际值)。 • 选择机器数的原则:
36 6
35 5
37 7
38 8
0110 0101 0111 1000
–一个字节存放两个十进制数位。 –每位十进制的值可用二—十编码(BCD码)表示。
• 优点:节省存储空间,可直接完成十进制数 的算术运算。
• 例如 -78表示如下图。
字节 0 字节 D 7 8
图
字节 D 0
计算机原理
解释一:对于整数来讲其二进制表示没有符号位.一个字节的表示范围为00001,由此可见一个字节的整数表示范围为[0,255=2^8 - 1]。对于整数来讲,其二进制表示中存在一个符号位.先来看一下下面几个定义:
1:在计算机中,负数以其正值的补码形式表达。正数即在符号位补0.
2:原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
3:反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
4:补码: 反码+1
由以上可以得到.计算机储存有符号的整数时,是用该整数的补码进行储存的,0的原码、补码都是0;正数的原码、补码可以特殊理解为相同;负数的补码是它的反码加1。
范围: 正数 [00000000 - 01111111] 即[0, 2^7 - 1]。负数 [ - ] 。范围说明. - 1 = ,取反=00000001 即是-1. -1 = 01111111,取反=, 即是-128. 因此有一个有符号二进制表示范围是从[-128-127].
解释二:大家都知道数据在计算机中都是按字节来储存了,1个字节等于8位(1Byte=8bit),而计算机只能识别0和1这两个数,所以根据排列,1个字节能代表256种不同的信息,即2^8(0和1两种可能,8位排列),比如定义一个字节大小的无符号整数(unsigned char),那么它能表示的是0~255(0~2^8 -1)这些数,一共是256个数,因为,前面说了,一个字节只能表示256种不同的信息。别停下,还是一个字节的无符号整数,我们来进一步剖析它,0是这些数中最小的一个,我们先假设它在计算机内部就用8位二进制表示为00000000(从理论上来说也可以表示成其他不同的二进制码,只要这256个数每个数对应的二进制码都不相同就可以了),再假设1表示为00000001,2表示为00000010,3表示为00000011,依次类推,那么最大的那个数255在8位二进制中就表示为最大的数,然后,我们把这些二进制码换算成十进制看看,会发现刚好和我们假设的数是相同的,而事实上,在计算机中,无符号的整数就是按这个原理来储存的,所以告诉你一个无符号的整数的二进制码,你就可以知道这个数是多少,而且知道在计算机中,这个数本身就是以这个二进制码来储存的。
第二章 计算机中数据信息 的表示及运算
× 2 = 0.4 × 2 = 0.8 × 2 = 1.6 × 2 = 1.2 × 2 = 0.4 × 2 = 0.8 × 2 = 1.6 × 2 = 1.2
整数部分
0 0 1 1 0 0 1 1
(0.2)10 =[ 0.001100110011…]2
3)其它进制之间的直接转换法
二<-->八
000 001 010 011 100 101 110 111 0 1 2 3 4 5 6 7 0000 0001 0010 0011 0100 0101 0110 0111 二 <-->十六 0 1 2 3 4 5 6 7 1000 1001 1010 1011 1100 1101 1110 1111 8 9 A B C D E F
2n+X=2n-|X| 0>X≥- 2(n-1)
完成下列数的真值到补码的转换
X1 = + 0 1011011 [X1]补= 0 1011011
X2 = - 0 1011011 [X2]补= 1 0100101
补码的表示范围:
• N位纯整数: 2n-1-1 ~ -2n-1 • N位纯小数: 1-2-(n-1) ~ - 1 • 均能表示 2n 个数 在补码系统中,由于0有唯一的编码, 因此n位二进制能表示个2n补码数。
☆二进制数的性质
• 移位性质: –小数点左移一位,数值减小一半 –小数点右移一位,数值扩大一倍 • 奇偶性质: –最低位为0,偶数 –最低位为1,奇数
计算机原理 计算机中数据的表示方法
第二章计算机中数据的表示方法
第一节计算机中数据的分类和表示方法
计算机内部传送的信息分为两大类:控制信息和数据信息。
数据信息又分为两种,数值型数据和非数值型数据。
注意:任何数据在计算机中都是用二进制表示的。
一、数据的单位
1.位(bit):是计算机中最小的数据单位,常用小写字母b来表示。
2.字节(Byte):用大字母B来表示,1B=8b
表示文件的长度,衡量存储器的容量,存储器编址用字节做单位。
磁盘的存储单位是:簇
磁盘存放信息的最小编址单位是:扇区
信息编码的的最小单位是:码元
3.字(word):由若干字节组成,是字节的整数倍。在计算机内部进行数据传送,或CPU进行数据处理时,用它作基本单位。
字的长度即字长,并不是所有的计算机字长都一样,常见的字长有16位,32位,64位。
字长是CPU一次能够处理二进制的位数。字长越长,计算机速度越快,精度越高。
4.常用的存储单位之间的换算
1TB=1024GB 1GB=1024MB 1MB=1024KB 1KB=1024B 210 1B=8b
二、数据的分类
1.按数据处理方式分类
数值型和非数值型
非数值型又分为:字符数据和逻辑数据
2.按数据传输形式分类
数字数据和模拟数据
数字数据:离散型的;模拟数据:连续的值
模拟数据被数字化后存入计算机,采用模数转化将模拟数据数字化后存入计算机。
三、数据的表示方法
1.数值型数据的表示
(1)按小数点的处理可分为定点数和浮点数。
(2)按符号位有原码、补码,反码三种形式的机器数
2.非数值型数据的表示
第二节各种数制及其转换方法
一、数制的组成
计算机内的数据表示
4.权值:基数R的i次幂Ri。
任何一个R进制都是由一串数码表示的, 其中每一位数码所表示的实际大小,除了数 码本身的数值以外,还与它所住的位置有关, 由位置决定的值称为位值(或权值)。
常用R来表示,
例如:二进制 的R为2,十进 制的R为10等等
例如:有十进制数如下 222.22 =200+20+2+0.2+0.02
计算机内如何表示信息
信息
是事物存在的方式、运动状态以及这些方式、状态及 其变化的直接和间接的表达
信息处理
即信息加工
包括信息的获取、存储、变换、传输、检测、使用
信息技术的核心技术
计算机技术
通讯技术
3C
控制技术
计算机内如何表示数值
计算机为什么采用二进制编码? 受制于元器件 二进制的运算规则很简单 物理上容易实现数据的存储 便于逻辑判断
计算机内如何表示数值
进制的基本概念 数制的种类 不同进制间的相互转换 整数、实数的表示方法(补充内容) 原码、反码与补码(补充内容)
一、基本概念
1.数制:表示数的方法和规则。
比如:十进制 方法:用0~9十个数字 字符表示数的大小 规则:逢十进一,借 一当十
2.进位(计数)制:按进位方式计数的数制。 3.基数:一个计数制所包含的数字符号的个数。
汉字的编码
如“啊”: 区:011 0000
第3节 计算机中数据的表示
第3节计算机中数据的表示
教学目的:了解计算机中数据的分类和表示方法;掌握原码、反码、补码的概念以及相互之间的转换;
教学重点:数据的浮点表示;原码、反码、补码的概念以及相互之间的转换;教学难点:浮点表示,原码、反码、补码表示范围
教学课时:2
◆【课前预习】◆
阅读教材,完成课堂探究中的填空。
◆【课堂探究】◆
一.计算机中的数据分类
数据按其属性是否具有度量多少的数量含义而分为数值型、字符型、逻辑型三大类。1.数值型:具有量的多少的含义,根据是不含有小数又分为整型和实型两类。
2.字符型:无数量多少的含义,但无论哪一个字符均对应一个惟一的二进制编码,此编码或用于计算机内部处理或用于信息的输入输出。常用的有ASCII码、汉字的各种编码。3.逻辑数据:为了使计算机具有逻辑判断能力,引入了逻辑数据,并使计算机能对它们进行逻辑运算,从而得出一个逻辑式的判断结果。在计算机中用一位或一个字节表示,仅取“真“或“假“两个值,在计算机内部常用0表示假,1表示真。
二.计算机中数据的表示方法
1.数值型数据的表示
在计算机内部,要表示一个数值数据,将涉及数的正负号及小数点,根据是否考虑正负号,可将数值数据分为无符号数与有符号数,根据数据小数点是否固定可将其分为定点数和浮点数。
(1)带符号数的表示
在计算机内部,数的正负号用一位二进制数来表示,这个二进制位一般在数的最高位,又称为符号位,且用0代表正,用1代表负。
若用八位二进制位表示一个有符号的整数,其最高位为符号位,则表示数值的只有七个二进制位,可表示的最大整数为127,最小整数为-127。
计算机——信息表示及存储
信息表示及存储
数据是反映客观事物属性的记录,是信息的具体表现形式。数据经过加工处理之后,就成为信息;而信息需要经过数字化转变成数据才能存储和传输。
数据信息分为数值型和非数值型。
计算机能够区分不同的信息,是因为它们采用了不同的编码规则。
1、数制
数制(也称计数制)是指用一组固定的符号和统一的规则来计数的方法。
十进制(十进位计数制):生活常用
二进制:计算机中使用
除此之外还有八进制,十六进制.
(1)四个概念
数码:数制中表示基本数大小的不同数字符号。
基数:数制中使用数码的个数
位权:数制中每个位置的价值
标识(后缀):为了区分不同的进制,在数字后面加上相应的字母或者括号加上数字下标。比如(66)10。和66D都表示十进制数:66
规则:进位规则,多进制就满多少进!
借位规则,多少进制(向高位)借一位就当多少
十进制下:8+2=10 10-3=7 9+2=11
八进制下:6+2=10 6+3=11 10-2=6
二进制下:1+1=10 10- |=|
十六进制下:8+2=A 11-2= F 8+8=10
练习:判断102B 1Q ABCDF H 是否正确(××√)6+3=11判断几进制(八进制)
(2)进制转换
①十进制→R进制
整数:除以R反向取余
小数:乘以R正向取整(取整变0)
例:20.625 D=10100.101 B二进制
66.5 D=102.4 Q八进制
30.5 D=1E.8 H十六进制
练习:29.125 D=11101.001 B二进制
②R进制→十进制
乘权求和法:每一位的值乘以对应的价值(位权)
标位数时注意两点:
数据在计算机中的表示
原码和补码示例
• 占两个字节的整数的数值范围是 -32768~32767
32767 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
-32768
的补码 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 11 1 1 1 1 1 1 1 1 1 1 1 1
应的二进制数。
例如 :将八进制数3274转换为二进制数:
32
74
011 010 111 100
即(3274)8=(011010111100)2
二进制转换为十六进制
方法:
将二进制数从最右边的低位到高位每4位分成一组
,最后不足4位的前面补0,然后每4位二进制用十
六进制数来表示即可得到相应的十六进制数。
• 西文->ASCII码(输入)->内存->西文字形码 (输出)->西文
• 汉字->输入码/机内码转换(输入)->内存-> 汉字字形码(输出)->汉字
• 声音、图像->模/数转换(输入)->内存->数/ 模转换(输出)->声音、图像
数值数据-整数
• 通常规定一个数的最高位为符号位。用“0”
和“1”来表示,0表示该数为正,符号位 为1表示该数为负。
数据单位
• 字:Word或W,字由若干字节组成,每个字中包含
- 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@