原码、反码、补码 定点数 浮点数什么
- 格式:doc
- 大小:42.00 KB
- 文档页数:4
⼆进制正负数及0的原码、反码、补码之间的转化(附标志位解释)1、0的原码反码补码 0原码是00000000 -0原码是10000000 0反码是00000000 -0反码是11111111 0补码是00000000 补码没有正0与负0之分。
⾸先,计算机都是使⽤⼆进制的补码进⾏计算。
2、⼆进制1、正数的⼆进制原码、反码、补码都是相同的2、负数的⼆进制原码:负数的绝对值的⼆进制的最⾼位变为1(1是标志位,只⽤来表⽰正负,1表⽰负数,0表⽰是正数。
所以⼋位⼆进制的取值范围是[-127,127]),其余位与正数原码相同。
⽐如-32第⼀步:32(10)=00100000(2)第⼆步:最⾼位变为1:101000003、负数的反码:等于原码的最⾼位不变,其余取反。
⽐如-32原码为:10100000反码为:110111114、负数的补码:等于原码的最⾼位不变,其余取反,然后加⼀。
⽐如-32第⼀步,原码为:10100000第⼆步,最⾼位不变取反:11011111第三步,加⼀得补码:11100000原码变成反码:最⾼位不变,其余取反原码变成补码:最⾼位不变,其余取反之后加⼀。
补码变成移码:补码最⾼符号位取反就是移码。
3、定点⼩数、定点整数和浮点数的范围(1)16位⽆符号整数范围:0 ~ 216-1,即0~65535(2)16位原码定点⼩数范围: -(1-2-15)~+(1-2-15)(3)16位移码定点整数范围: -215~+(215-1) 即-32768~+32767(4)16位补码定点整数范围: -215~+(215-1) 即-32768~+32767下述格式浮点数范围:关于原点对称的最⼤正数:+0.111 1111*21111 1111=+(1-2-7)*2127最⼩正数:+0.100 0000*20000 0000=+2-1*2-128=+2-129最⼤负数:-0.100 0000*20000 0000= - 2-1*2-128= - 2-129最⼩负数:- 0.111 1111*21111 1111= - (1-2-7)*21274、标志位解释1、(进位标志) =1 算术操作最⾼位产⽣了进位或借位, =0 最⾼位⽆进位或借位( =1 则说明了有进位或借位,CF=0 则说明了⽆借位);2、PF(奇偶标志) =1 数据最低8位中1的个数为偶数,=0 数据最低8位中1的个数为奇数;3、AF(辅助进位标志) =1 D3→D4位产⽣了进位或借位,=0 D3→D4位⽆进位或借位;4、(零标志) =1 操作结果为0,=0 结果不为0;5、(符号标志) =1 结果最⾼位为1 ,=0 结果最⾼位为0;6、(溢出标志) =1 此次运算发⽣了溢出, =0 ⽆溢出。
计算机概论一、单项选择题(每题2分,共50分)1、第一台数字电子计算机ENIAC,于___C__在美国诞生。
A.1942年B.1951年C.1946D.1949年2、 IBM公司的“深蓝”计算机曾经与世界象棋大师进行比赛并获得胜利,“深蓝”体现了计算机____D__方面的应用。
A. 科学计算B. 数据处理C. 辅助设计D. 人工智能3、将十进制175转换成十六进制,结果为___A___。
A. AFHB. 10FHC. D0HD. 98H4、如果(73)X=(3B)16,则X为____B__。
A. 2B. 8C. 10D. 165、数据处理的基本单位是___B___。
A. 位B. 字节C. 字D. 双字6、假设某计算机的字长为8位,则十进制数(-100)10的反码表示为____C__。
A. 11100100B. 10011100C. 10011011D. 100110017、已知[X]补=10111010,求X(真值)____A__。
A. -1000110B. -1000101C. 1000100D. 10001108、根据冯.诺依曼机的基本特点,下面说法不正确的是___B___。
A. 采用存储程序方式,计算机能自动逐条取指令并运行。
B. 硬件与软件不分开,配置不同的硬件及软件来适应不同的要求C. 指令和数据都采用二进制D. 指令由操作码和地址码组成9、关于计算机指令系统及工作原理,不正确的说法是___A___。
A. 所有计算机的指令系统都是一样的B. 计算机自动处理是指运行预先编制好的运算程序C. 指令逐条运行由计算机硬件实现D. 计算机程序是用户根据某一任务的解决步骤,选用一组指令进行有序的集合10、准确地说,计算机的中央处理器(CPU)是由____C__组成。
①运算器②控制器③主存④寄存器A.①② B. ①②③ C. ①②④ D. ①②③④11、关于计算机存储器,不正确的描述是__C____。
考点1.1 计算机中数据的表示及运算一. 机器数和码制原码、反码、补码具体概念我就不重复了,只重申下相关结论:a.正数的原码、反码、补码都相同。
b.负数的反码为原码的按位取反(保持符号位不变),补码为反码加1。
二.存储单元中的数据(存储单元包括存储器中的存储单元和寄存器)在计算机的存储器的存储单元中的数据均以补码形式存放的,于是在计算机中的数据表示有下面结论:a不使用原码与反码。
但原码与反码可以作为计算真值的中间媒介。
b存储单元中的数据以补码形式存在。
c 数据的存取与运算都以补码形式进行。
d补码就是机器数,机器数就是补码三.定点数与浮点数1. 数的定点表示方法定点数是小数点固定的数。
在计算机中没有专门表示小数点的位,小数点的位置是约定默认的。
一般固定在机器数的最低位之后,或是固定在符号位之后。
前者称为定点纯整数,后者称为定点纯小数。
(1). 定点整数——小数点位置固定在数的最低位之后如:Dn-1 Dn-2 • • • • • • D1 D0.范围:2n-1 -1~ -2n-1 (采用字长n=16位补码时其值为32767 ~ -32768)(2). 定点小数——小数点位置固定在数的符号位之后、数值最高位之前。
如:D0. D-1 • • • • • • D-(n-2) D-(n-1)范围:1 - 2-(n-1) ~ -1(采用字长n=16位时其值为32767/32768 ~ -1)其中n表示字长多少位例1:2. 数的浮点表示方法浮点数:浮点数是指小数点位置不固定的数,它既有整数部分又有小数部分,如123.55、33.789等。
(1). 浮点数的表示:是把字长分成阶码和尾数两部分。
其根据就是:与科学计数法相似,任意一个J进制数N,总可以写成N = J E× M式中M称为数N的尾数(mantissa),是一个纯小数;E为数N的阶码(e x ponent),是一个整数,J称为比例因子J E的底数。
原码、反码、补码的定义所有的负数的反码等于原码各位取反;补码等于反码加一.十六进制也是先化成2进制的在化补码。
补码的用途是让机器学会减法运算的。
应为所有的处理器是电路做的,电路其实只是加法器,只能做加法。
如何能让电脑做减法呢,就用补码啊。
减去一个数就等于加上她的补码。
一、原码、反码、补码的定义1、原码的定义①小数原码的定义[X]原=X 0≤X<1 1-X-1<X≤0例如:X=+0.1011,[X]原=01011 X=-0.1011[X]原=11011②整数原码的定义[X]原=X 0≤X<2n 2n-X-2n<X≤0 2、补码的定义①小数补码的定义[X]补=X 0≤X<1 2+X-1≤X<0例如:X=+0.1011,[X]补=01011 X=-0.1011,[X]补=10101②整数补码的定义[X]补=X 0≤X<2n 2n+1+X-2n≤X<0 3、反码的定义①小数反码的定义[X]反=X 0≤X<1 2-2n-1-X-1<X≤0例如:X=+0.1011[X]反=01011 X=-0.1011[X]反=10100②整数反码的定义[X]反=X 0≤X<2n 2n+1-1-X-2n<X≤0 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和1,正好用0,负号用1. 假设有一 int 类型的数,值为5,那么,我们知道它在计算机中表示为: 00000000 00000000 00000000 00000101 5转换成二制是101,不过int类型的数占用4字节(32位),所以前面填了一堆0。 现在想知道,-5在计算机中如何表示? 在计算机中,负数以其正值的补码形式表达。 什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。 比如 00000000 00000000 00000000 00000101 是 5的 原码。 反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。 取反操作指:原为1,得0;原为0,得1。(1变0; 0变1) 比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010。 称:11111111 11111111 11111111 11111010 是 00000000 00000000 00000000 00000101 的反码。 反码是相互的,所以也可称: 11111111 11111111 11111111 11111010 和 00000000 00000000 00000000 00000101 互为反码。 补码:反码加1称为补码。 也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。 比如:00000000 00000000 00000000 00000101 的反码是:11111111 11111111 11111111 11111010。 那么,补码为: 11111111 11111111 11111111 11111010 1 = 11111111 11111111 11111111 11111011 所以,-5 在计算机中表达为:11111111 11111111 11111111 11111011。转换为十六进制:0xFFFFFFFB。
再举一例,我们来看整数-1在计算机中如何表示。 假设这也是一个int类型,那么: 1、先取1的原码:00000000 00000000 00000000 00000001 2、得反码: 11111111 11111111 11111111 11111110 3、得补码: 11111111 11111111 11111111 11111111 正数的原码,补码,反码都相同,都等于它本身 负数的补码是:符号位为1,其余各位求反,末位加1 反码是:符号位为1,其余各位求反,但末位不加1 也就是说,反码末位加上1就是补码
1100110011 原 1011001100 反 除符号位,按位取反 1011001101 补 除符号位,按位取反再加1
正数的原反补是一样的 在计算机中,数据是以补码的形式存储的: 在n位的机器数中,最高位为符号位,该位为零表示为正,为1表示为负; 其余n-1位为数值位,各位的值可为0或1。 当真值为正时:原码、反码、补码数值位完全相同; 当真值为负时: 原码的数值位保持原样, 反码的数值位是原码数值位的各位取反,
补码则是反码的最低位加一。 注意符号位不变。 如:若机器数是16位: 十进制数 17 的原码、反码与补码均为: 0000000000010001 十进制数-17 的原码、反码与补码分别为:1000000000010001、1111111111101110、1111111111101111 定点数与浮点数 1、定点数: 定点数指小数点在数中的位置是固定不变的,通常有定点整数和定点小数。在对小数点位置作出选择之后,运算中的所有数均应统一为定点整数或定点小数,在运算中不再考虑小数问题。 (1)定义:数据中小数点位置固定不变的数 (2)种类:定点整数 (3)小数点在符号位与有效位之间。 注:定点数受字长的限制,超出范围会有溢出。 2、浮点数: 浮点数中小数点的位置是不固定的,用阶码和尾数来表示。通常尾数为纯小数,阶码为整数,尾数和阶码均为带符号数。尾数的符号表示数的正负;阶码的符号则表明小数点的实际位置。 (1)形式:N=M×2E (2)M:尾数 (3)E:阶码 (4)在计算机中M和E表示形式为 阶码 尾数符号 尾数 将其与数学中的科学记数法进行比较。 注:其浮点数的精度由尾数决定,数的表示范围由阶码决定。 3、定点数与浮点数区别 定点表示法运算直观,但数的表示范围较小,不同的数运算时要考虑比例因子的选取,以防止溢出。浮点表示法运算时可以不考虑溢出,但浮点运算,编程较难。要掌握定、浮点数的转换方法及浮点数规格化方法。
浮点数表示 和 补码表示 一个浮点数a由两个数m和e来表示:a = m × b^e。在任意一个这样的系统中,我们选择一个基数b(记数系统的基)和精度p(即使用多少位来存储)。m(即尾数)是形如±d.ddd...ddd的p位数(每一位是一个介于0到b-1之间的整数,包括0和b-1)。如果m的第一位是非0整数,m称作规格化的。有一些描述使用一个单独的符号位(s 代表+或者-)来表示正负,这样m必须是正的。 当尾数用二进制数表示时,浮点规格化数定义尾数S应满足下面关系: (I)对于正数,S应大于等于1/2,小于1,用二进制数表示为: S=0.1******„(其中*为0或1) (II)对于负数,如果尾数用原码表示,S应小于等于-1/2,大于-1,表示为: S=1.1******„(其中*为0或1) m称作尾数,用原码表示 e称作阶数,用补码表示 现在一般使用的浮点表示方法是美国电气电子工程师学会标准IEEE 754-1985 ----------------------------------- 有符号数有三种表示:原码(最高位0表示正数,1表示负数)、反码、补码。 8位有符号数表示范围是: 原码:-127~+127 反码:-127~+127 补码:-128~+127 所以8位表示时,-128没有原码表示,只有补码表示,为10000000 (此数并非表示算出来的-0的补码,而是人为规定为-128的8位补码,并规定0只有一个补码00000000,原码时10000000表示-0)
8位无符号数就可以表示0~255。 计算机采用补码是为了有符号数中0的表示的唯一性(正负0原码不同),并且可以把减法转换成加法来运算:a补+(-b)补=[a-b]补,再对[a-b]补求一个补就得到a-b的值. ------------------------------------------ 原码就是这个数本身的二进制形式。 例如 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(注意,对补码10000000(-128)再求补并不能得到-128的原码(8位原码只能表示到-127)) 所以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之后有进位的,要一直往前进位,包括符号位)。