【信息学竞赛干货】Noip初赛理论知识总结(五)
要点一
符号数的机器码表示方法

带符号二进制数的表示方法
带符号二进制数用最高位的一位数来表示符号:0表示正,1表示负。
含符号位二进制数位数 |
数值范围 |
十六进制范围表示法 |
8位二进制数 |
-128 ~ +127 |
80H~7FH |
16位二进制数 |
-32768 ~ +32767 |
8000H~7FFFH |
32位二进制数 |
-2147483648 ~ +2147483647 |
80000000H~7FFFFFFFH |
要点二
符号位的机器码表示

机器数和真值
数在计算机中的表示形式统称为机器数,它有两上特点:其一,数的符号数值化;其二,二进制数的位数受计算机设备字长的限制。
字长:机器内部一次能表示的二进制位数由机器的字长,字长8位叫一个字节(Byte),一般机器字长都是字节的整数倍,如字长8位、16位、32位、64位等。
机器数的真值:指带符号位的机器数所对应的十进制数值;如符号数01001B,11011B的真值分别是+9和-11。
要点三
数的原码、反码和补码表示

原码表示法
原码表示法是一种简单的机器数表示法,系符号和数字表示法。一个机器数x由符号闰和有效数值两部分组成,设符号位为x0,x真值的绝对值|x|=x1x2x3...xn,则x的机器数原码可表示为:
规律:正数的原码是它本身,负数的原码是取绝对值后,在最高位(左端)补“1”。

反码表示法
一个负数的原码符号位不变,其余各位按位取反就是机器数的反码表示法。正数的反码与原码相同。

补码表示法
首先分析两个十进制数年运算:78-38=41,79+62=141
如果使用两位数的运算器,做79+62时,多余的100因为超出了运算器两位数的范围而自动丢弃,这样在做78-38的减法时,用79+62的加法同样可以得到正确结果。
模是批一个计量系统的测量范围,其大小以计量进位制的基数为底数,位数为指数的幂。如两位十进制数的测量范围是1——9,溢出量是100,模就是102=100,上述运算称为模运算,可以写作:
79+(-38)=79+62 (mod 100)
进一步写为 -38=62,此时就说 –38的补法(对模100而言)是62。计算机是一种有限字长的数字系统,因此它的运算都是有模运算,超出模的运算结果都将溢出。n位二进制的模是2n,
注意:这个x的补码的最高位是“1”,表明它是一个负数。对于二进制数还有一种更加简单的方法由原码求出补码:
(1)正数的补码表示与原码相同;
(2)负数的补码是将原码符号位保持“1”之后,其余各位按位取反,末位再加1便得到补码,即取其原码的反码再加“1”:[x]补=[x]补+1。
下表列出的8位二进制原码,反码和补码并将补码用十六进制表示。
真值 |
原码(B) |
反码(B) |
补码(B) |
补码(H) |
+127 |
0 111 1111 |
0 111 1111 |
0 111 1111 |
7F |
+39 |
0 010 0111 |
0 010 0111 |
0 010 0111 |
27 |
+0 |
0 000 0000 |
0 000 0000 |
0 000 0000 |
00 |
-0 |
1 000 0000 |
1 111 1111 |
0 000 0000 |
00 |
-39 |
1 010 0111 |
1 101 1000 |
1 101 1001 |
D9 |
-127 |
1 111 1111 |
1 000 0000 |
1 000 0001 |
81 |
-128 |
无法表示 |
无法表示 |
1 000 0000 |
80 |
从上可看出,真值+0和-0的补码表示是一致的,但在原码和反码表示中具有不同形式。8位补码机器数可以表示-128,但不存在+128的补码与之对应,由此可知,8位二进制补码能表示数的范围是-128——+127。还要注意,不存在-128的8位原码和反码形式。
要点四
定点数和浮点数

定点数
计算机处理的数据不仅有符号,而且大量的数据带有小数,小数点不占有二进制一位而是隐含在机器数里某个固定位置上。通常采取两种简单的约定:一种是约定所有机器数的小数的小数点位置隐含在机器数的最低位之后,叫定点纯整机器数,简称定点整数。如、
小数点位置
若有符号位,符号位仍在最高位。因小数点隐含在数的最低位之后,所以上数表示+1011001B。另一种约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前,叫定点纯小数机器数,简称定点小数,例如
小数点位置
最高位是符号,小数点在符号位之后,所以上数表示 -0.0101101B。
无论是定点整数,还是定点小数,都可以有原码、反码和补码三种形式。例如定点小数
1 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
如果这是个原码表示的定点小数,[x]原=11110000B,则x= -0.111B=-0.875D,如这是补码表示的定点小数,[x]补=11110000B,则[x]原=10010000B,则x= -0.001B=-0.125D。(想一想,如何由补码求原码?)

浮点数
计算机多数情况下采作浮点数表示数值,它与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分:
其中:E——N的阶码(Expoent),是有符号的整数
S——N的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。
浮点数由阶码和尾数两部分组成,底数2在机器数中不出现,是隐含的。阶码的正负符号E0,在最前位,阶反映了数N小数点的位置,常用补码表示。二进制数N小数点每左移一位,阶增加1。尾数是这点小数,常取补码或原码,码制不一定与阶码相同,数N的小数点右移一位,在浮点数中表现为尾数左移一位。尾数的长度决定了数N的精度。尾数符号叫尾符,是数N的符号,也占一位。
补充解释:阶码0011中的最高位“0”表示指数的符号是正号,后面的“011”表示指数是“3”;尾数11011101的最高位“1”表明整个小数是负数,余下的1011101是真正的尾数。
浮点数运算后结果必须化成规格化形式,所谓规格化,是指对于原码尾数来说,应使最高位数字S1=1,如果不是1且尾数不是全0时就要移动尾数直到S1=1,阶码相应变化,保证N值不变。
要点五
ASCII码
美国标准信息交换代码,
--end--
声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com