2011信息学奥赛基础知识
(进制与编码)
一、进制转换
四种常用的数制及它们之间的相互转换:
进制
基数
符号
基数个数
权
进数规律
十进制
0、1、2、3、4、5、6、7、8、9
D
10
10i
逢十进一
二进制
0、1
B
2
2i
逢二进一
八进制
0、1、2、3、4、5、6、7
O
8
8i
逢八进一
十六进制
0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F
H
16
16i
逢十六进一
二进制数、八进制数、十六进制数转换为十进制数的方法:按权展开求和法
十进制数转换为二进制数、八进制数、十六进制数的方法:整数部分短除法—逆向取余,小数部分—正向取整
1.二进制与十进制间的相互转换:
(1)二进制转十进制 方法:“按权展开求和”
例: (1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2 )10
=(8+0+2+1+0+0.25)10=(11.25)10
规律:个位上的数字的次数是0,十位上的数字的次数是1,......,依次递增,而十
分位的数字的次数是-1,百分位上数字的次数是-2,......,依次递减。
注意:不是任何一个十进制小数都能转换成有限位的二进制数。
(2)十进制转二进制
十进制整数转二进制数:“除以2取余,逆序排列”(短除反取余法)
例: (89)10 =(1011001)2
2 89
2 44 ……1
2 22 ……0
2 11 ……0
2 5 ……1
2 2 ……1
2 1 ……0
0 ……1
十进制小数转二进制数:“乘以2取整,顺序排列”(乘2顺取整法)
2.八进制与二进制的转换:
二进制数转换成八进制数:从小数点开始,整数部分向左、小数部分向右,每3位为一组用一位八进制数的数字
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示,不足3位的要用“0”补足3位,就得到一个八进制数。
八进制数转换成二进制数:把每一个八进制数转换成3位的二进制数,就得到一个二进制数。
例:将八进制的37.416转换成二进制数:
3 7 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
例:将二进制的10110.0011 转换成八进制:
0 1 0 1 1 0 . 0 0 1 1 0 0
2 6 . 1 4
即:(10110.011)2 = (26.14)8
3.十六进制与二进制的转换:
二进制数转换成十六进制数:从小数点开始,整数部分向左、小数部分向右,每4位为一组用一位十六进制数的数字表示,不足4位的要用“0”补足4位,就得到一个十六进制数。
十六进制数转换成二进制数:把每一个八进制数转换成4位的二进制数,就得到一个二进制数。例:将十六进制数5DF.9 转换成二进制:
5 D F . 9
0101 1101 1111 .1001
即:(5DF.9)16 =(10111011111.1001)2
例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110
6 1 . E
即:(1100001.111)2 =(61.E)16
注意:以上所说的二进制数均是无符号的数。这些数的范围如下表:
无符号位二进制数位数
数值范围
十六进制范围表示法
8位二进制数
0~255 (255=28-1)
00~0FFH
16位二进制数
0~65535 (65535=216-1)
0000H~0FFFFH
32位二进制数
0~232-1
00000000H~0FFFFFFFFH
BCD码 即BCD代码。Binary-Coded Decimal?,简称BCD,称BCD码或二-十进制代码,亦称二进码十进数。是一种二进制的数字编码形式,用二进制编码的十进制代码。这种编码形式利用了四个位元来储存一个十进制的数码,使二进制和十进制之间的转换得以快捷的进行。这种编码技巧,最常用于会计系统的设计里,因为会计MATCH_
word
word文档格式规范word作业纸小票打印word模板word简历模板免费word简历
_1713412546981_0经常需要对很长的数字串作准确的计算。相对于一般的浮点式记数法,采用BCD码,既可保存数值的精确度,又可免却使电脑作浮点运算时所耗费的时间。此外,对于其他需要高精确度的计算,BCD编码亦很常用。例:3 2 1 的BCD代码为 0011 0010 0001
二、原码、反码、补码
计算机中参与运算的数有正负之分,计算机中的数的正负号也是用二进制表示的。用二进制数表示符号的数称为机器码。常用的机器码有原码、反码和补码。
1、原码
求原码的方法:设X;若X≥0,则符号位(原码最高位)为0,X其余各位取值照抄;若X≤0,则符号位为1,其余各位照抄。
【例1】X=+1001001 [X]原 = 01001001 【例2】X=-1001001 [X]原 = 11001001
2、反码
求反码的方法:设X;若X≥0,则符号位(原码最高位)为0,X其余各位取值照抄;若X≤0,则符号位为1,其余各位按位取反。
【例3】X=+1001001 [X]反 = 01001001 【例4】X=-1001001 [X]反 = 10110110
3、补码
求补码的方法:设X;若X≥0,则符号位(原码最高位)为0,X其余各位取值照抄;若X≤0,则符号位为1,其余各位按位取反后,最低位加1。
【例5】X=+1001001 [X]补 = 01001001 【例6】X=-1001001 [X]补 = 10110111
4、补码加减法
计算机中实际上只有加法,减法运算转换成加法运算进行,乘法运算转换成加法运算进行,除法运算转换成减法运算进行。用补码可以很方便的进行这种运算。
1、补码加法
[X+Y]补 = [X]补 + [Y]补
【例7】X=+0110011,Y=-0101001,求[X+Y]补
[X]补=00110011 [Y]补=11010111
[X+Y]补 = [X]补 + [Y]补 = 00110011+11010111=00001010
注:因为计算机中运算器的位长是固定的,上述运算中产生的最高位进位将丢掉,所以结果不是 100001010,而是00001010。
2、补码减法
[X-Y]补 = [X]补 - [Y]补 = [X]补 + [-Y]补
其中[-Y]补称为负补,求负补的方法是:对补码的每一位(包括符号位)求反,最后末位加“1”。
【例8】X=+0111001,Y=+1001101,求[X-Y]补
[X]补=00111001 [Y]补=01001101 [-Y]补 = 10110011
[X-Y]补 = [X]补 + [-Y]补 = 00111001+10110011=11101100
5、数的表示范围
通过上面的学习,我们就可以知道计算机如果用一个字节表示一个整数的时候,如果是无符号数,可以表示0~255共256个数(00000000~11111111),如果是有符号数则能表示-128~127共256个数(10000000~01111111)。如果两个字节表示一个整数,则共有65536个数可以表示,大部分程序设计语言中整数的范围都是-32768~32767的原因,可以看出这种整数类型是16位的有符号数,而且是补码表示的。
带符号数的机器码表示方法,n位范围是-2n-1到2n-1-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位原码和反码形式。
三、奇偶校验
计算机中数据在进行存储和传输过程中可能会发生错误。为了及时发现和纠正这类错误,在数据传输(存储)过程中要进行校验,常用的校验方法就是奇偶校验。
奇偶校验能发现一位或奇数位错误,且不能纠正错误。一般以字节(八位二进制)为单位加1位奇偶校验位。奇偶校验分奇校验和偶校验两种。
奇校验:一个字节前面加一位校验位使得“1”的个数保持为奇数,若八位二进制数中“1”的个数为偶数,则校验位为“1”;若八位二进制数中“1”的个数为奇数,则校验位为“0”。
【例1】给10011001 01101101加奇校验结果为110011001 001101101
偶校验:一个字节前面加一位校验位使得“1”的个数保持为偶数,若八位二进制数中“1”的个数为偶数,则校验位为“0”;若八位二进制数中“1”的个数为奇数,则校验位为“1”。
【例2】给10011001 01101101加偶校验结果为010011001 101101101
四、信息存贮
(一)定点数(Fixed-Point Number)
计算机处理的数据不仅有符号,而且大量的数据带有小数,小数点不占有二进制一位而是隐含在机器数里某个固定位置上(实际不存在)。通常采取两种简单的约定:一种是约定所有机器数的小数的小数点位置隐含在机器数的最低位之后,叫定点纯整机器数,简称定点整数。另一种约定所有机器数的小数点隐含在符号位之后、有效部分最高位之前,叫定点纯小数机器数,简称定点小数。无论是定点整数,还是定点小数,都可以有原码、反码和补码三种形式。
(二)浮点数(Floating-Point Number)
计算机多数情况下采用作浮点数表示数值,它与科学计数法相似,把一个二进制数通过移动小数点位置表示成阶码和尾数两部分:
其中:E——N的阶码(Expoent),是有符号的整数
S——N的尾数(Mantissa),是数值的有效数字部分,一般规定取二进制定点纯小数形式。
继续阅读