计算机数的运算基础
附录一 计算机数的运算基础 第一节 进位计数制及相互转换
一、进位计数制
按进位的原则进行计数的方法称之为进位计数制,简称进位制。人们日常生活中习惯上使用十进制,而二进制使于实现、存储、传输,所以计算机中采用二进制。但二进制不易书写和阅读,因此又引入了八进制和十六进制。
1(十进制(后缀或下标D
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示)
十进制计数原则:逢十进一
十进制的基数为:10
十进制的数码为:0 1 2 3 4 5 6 7 8 9
k 十进制数第K位的权为:10
(第K位的权为基数的K次方,第K位的数码与第K位权的乘积表示第K位数的值)。
——321612例如:8846.78=8×10+8×10+4×10+6×10+7×10+8×10 该数中共出现三次数码8,但各自的权不一样,故其代表的值也不一样。
2(二进制(后缀或下标B表示)
二进制计数原则:逢二进一
二进制的基数为:2
二进制的数码为:0 1
K二进制数第K位的权为:2
76543210例如:11010101.01B=1×2+1×2+0×2+1×2+0×2+1×2+0×2+1×2+0×2——12+1×2=213.25
N N位二进制数可以表示2个数。例如3位二进制数可以表示8个数,如附表1所示:
附表1
二 进 制 数 000 001 010 011 100 101 110 111 相应的十进制数 0 1 2 3 4 5 6 7
3(八进制(后缀或下标O表示)
八进制计计数原则:逢八进一
228
八进制的基数为:8
八进制的数码为:0 1 2 3 4 5 6 7
K八进制数第K位的权为:8
210例如:127O=1×8+2×8+7×8=87D
4(十六进制(后缀或下标H表示)
十六进制计数原则:逢十六进一
十六进制的基数为:16
十六进制的数码为:0 1 2 3 4 5 6 7 8 9 A B C D E F
k十六进制第K位的权为: 16
—101例如:64.4H=6×16+4×16+4×16=100.25D
十六进制数、二进制和十进制数的对应关系如附表2所示:
附表2
二 进 制 数 0000 0001 0010 0011 0100 0101 0110 0111
十 进 制 数 0 1 2 3 4 5 6 7
十六进制数 0 1 2 3 4 5 6 7
二 进 制 数 1000 1001 1010 1011 1100 1101 1110 1111
十 进 制 数 8 9 10 11 12 13 14 15
十六进制数 8 9 A B C D E F
二、不同进位制之间的转换。
1(二进制数转换为十制数。
转换原则:按权展开求和。
76543210例如:10001101.11B=1×2+0×2+0×2+0×2+1×2+1×2+0×2+1×2+1×2——12+1×2=141.75D
八进制十六进制转换为十进制数也同样遵循该原则,不再单独介绍了。
2(十进制数转换为二进制数
十进制数转换为二进制数的原则:?整数部分:除基取余,逆序排列
?小数部分:乘基取整,顺序排列
例附—1 将十进数186和0.8125转换成二进制数。
229
低位 高位
高位 低位
因此 : 186D = 10111010B
0.8125D = 0.11011B
注意:当十进制小数不能用有限位二进制小数精确表示时,根据精度要求,采用“0舍1入”法,取有限位二进制小数近似表示。
十进制数转换为八进制,十六进制数同样遵循该原则。
3(二进制转换为十六进制
由于十六进制的基数是2的幂,所以二进制与十六进制之间的转换是十分方便的,二进制转换为十六进制的原则:整数部分从低位到高位四位一组不足补零,直接用十六进制数来表示;小数部分从高位到低位四位一组不足补零,直接用十六进制数表示。
例附—2 将二进制数 10011110.00111转换成十六进制数。
1001 1110 . 0011 1000
9 E 3 8
所以10011110.00111B,9E.38H。
4(十六进制数转换为二进制数
十六进制数转换为二进制数的原则:十六进制数中的每一位用4位二进制数来表示。
例如:将十六进制数A87.B8转换为二进制数。
A 8 7 . B 8
1010 1000 0111 1011 1000
所以A87.B8H=101010000111.10111000B。
八进制的基数同样是2的幂,因此二进制与十六进制之间的转换也遵循以上的原则,只是将原则中的四位改成三位。
230
例如:将二进制数11010110.110101B转换成八进制数。
将八进制数746.42O转换成二进制数。
011 010 110 . 110 101 7 4 6 . 4 2
3 2 6 6 5 111 100 110 100 01
所以,11010110.110101B=326.65O, 746.42O=111100110.100010B
三、八进制数和十六进制数运算
1(二进制数的运算
加法法则 乘法法则
0,0,0 0 X 0=0
0,1,1 0 X 1=0
1,0,1 1 X 0=0
1,1,0(进位1) 1 X 1=1 注意:二进制数加法运算中1,1,0(进位1)和逻辑运算中1?1,1的不同含义。
2(十六进制数的运算
十六进制数的运算遵循“逢十六进一”的原则。
? 十六进制加法:
十六进制数相加,当某一位上的数码之和S小于16时与十进制数同样处理,如果数码之各S?16时,则应该用S减16及进位1来取代S。
例如:
0 8 A 3 H
+ 4 B 8 9 H
5 4 2 CH
? 十六进制减法
十六进制减法也与十进制数类似,够减时直接相减,不够减时服从向高位借1为16的原则。
例如:
0 5 C 3 H
,3 D 2 5 H
C 8 9 E H
十六进制数的乘除运算同样根据逢十六进一的原则处理,这里不再繁述。
231
第二节 计算机中数和字符的表示
一、计算机中有符号数的表示。
计算机中的数是用二进制来表示的,有符号数中的符号也是用二进制数值来表示,0表示“,”号,1表示“,”号,这种符号数值化之后表示的数称之为机器数,它表示的数值称之为机器数的真值。
为将减法变为加法,以方便运算简化CPU的硬件结构,机器数有三种表示方法:即原码、反码和补码。
1(原码
最高位为符号位,符号位后表示该数的绝对值。
例如:
[+112]原=01110000B
[—112]原=11110000B
其中最高位为符号位,后面的7位是数值(字长为8位,若字长为16位,则后面15位为数值)。
原码表示时,112和,112的数值位相同,符号位不同。
说明:
? 0的原码有两种表示法:
[+0 ]原=00000000B
[,0]原=10000000B
N—1 N—1? N位原码的表示范围为:1,2,2,1。
例如8位原码表示的范围为:,127,+127
2(反码
最高位为符号位,正数的反码与原码相同,负数的反码为其正数原码按位求反。
[+112 ]反=01110000B
[–112]反=10001111B
说明:
? 0的反码有两种表示法:
[+0 ]反=00000000B
[,0]反=11111111B
232
n—1n—1? N位反码表示的范围为: 1,2,2,1;
例如8位反码表示的范围为 –127,+127。
? 符号位为1时,其后不是该数的绝对值。
例如反码11100101B的真值为–27,而不是–101。
3(补码
最高位为符号位,正数的补码与原码相同;负数的补码为其正数原码按位求反再加1。
例如: [+112]补 =01110000B
[—112]补 =10010000B
说明:
? 0的补码只有一种表示法:[+0]=[—0]=00000000B;
n—1n—1? n位补码所能表示的范围为—2,2—1;
例如8位补码表示的范围为,128,+127。
? 八位机器数中:[—128]补=10000000B,[,128]原,[,128]反不存在。
? 符号位为1时,其后不是该数的绝对值。
例如:补码11110010B的真值为–14,而不是–114。
有符号数采用补码表示时,就可以将减法运算转换为加法运算。因此计算机中有符号数均以补码表示。
例如:
X,84,16,(,84),(–16)?[X]补=[+84]补+[–16]补
(+84)补 =01010100B
(–16)补=11110000B
0 1 0 1 0 1 0 0B
+ 1 1 1 1 0 0 0 0B
0 1 0 0 0 1 0 0B
1
所以 [X]补=01000100B,即X=68。
在字长为8位的机器中,第7位的进位自动丢失,但这不会影响运算结果。
机器中这一位并不是真正丢失,而是保存在程序状态字PSW中的进位标志Cy中。
233
又如:X,48,88,(,48),(,88)?[X]补=[+48]补+[—88]补
[+48]补 =00110000B
[,88]补=10101000B
0 0 1 1 0 0 0 0B
+ 1 0 1 0 1 0 0 0B
1 1 0 1 1 0 0 0B
所以 [X]补=11011000B,即X=,40。
为进一步说明补码如何将减法运算转换为加法运算,我们举一日常的例子:对于钟表,它所能表示的最大数为12点,我们把它称之为模,即一个系统的量程或所能表示的最大的数。若当前标准时间为6点,现有一只表为9点,可以有两种调时方法:
? 9,3,6(倒拨)
? 9,9,6(顺拨)
即有9,9,9,3,6,12,6,9,3
因此对某一确定的模,某数减去小于模的一数,总可以用加上该数的负数与其模之各(即补码)来代替。故引入补码后,减法就可以转换为加法。
补码表示的数还具有以下特性:
[X,Y]补,[X]补,[Y]补
[X,Y]补,[X]补,[,Y]补
附表3为n,8和n,16时n位补码表示的数的范围。
234
附表3 n位二进制补码数的表示范围
十进制数 二进制数 十六进制数 十进制数 十六进制数
N=8 n=16
+127 01111111 7F +32767 7FFF
+126 01111110 7E +32766 7FFE
. . . . .
+2 00000010 02 +2 0002
+1 00000001 01 +1 0001
0 00000000 00 0 0000
-1 11111111 FF -1 FFFF
-2 11111110 EE -2 FFFE
. . . . .
-126 10000010 82 -32766 8002
-127 10000001 81 -32767 8001
-128 10000000 80 -32768 8000 二、无符号整数
在某些情况下,处理的全是正数时,就不必须再保留符号位。我们把最高有效位也作为数值处理,这样的数称之为无符号整数。8位无符号数表示的范围为:0,255。
计算机中最常用的无符号整数是表示存储单元地址的数。
三、字符表示
字母、数字、符号等各种字符(例如键盘输出的信息或打印输出的信都是按字符方式输出输出)按特定的规则,用二进制编码在计算中表示。字符的编码方式很多,最普遍采用的是美国标准信息交换码ASC?码。
ASC?码是7位二进制编码。计算机中用一个字节表示一个ASC?码字符,最高位默认为0,可用作校验位,见附录二。
235
附录二 美国标准信息交换码,ASCII,字符表
低 0 1 2 3 4 5 6 7 8 9 A B C D E F 位 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 高 位
0 0000 NUL SON STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI 1 0001 DLE DCI DC2 DC3 DC4 SYN ETB SYN CAN EM SUB ESC FS GS RS US 2
$ ~ ” , ( ) , 。 0010 SP # % * + - / ,
3
: : 0011 0 1 2 3 4 5 6 7 8 9 = ? , , 4 0100 A B C D E F G H I J K L M N O @
5 0101 P Q R S T U V W X Y Z [ \ ] , , 6
、 0110 a b c d e f g h I j k l m n o 7
( 0111 P q r s t u v w x y z { l } DEL
236
237