五、计算机数据表示" Y0 b) F- ]* ?4 w7 i
1.二进制计数制
6 P3 {/ c' L" z- Z3 ~ 引入二进制数字系统的计算机结构和性能具有如下的优点:
" a5 p1 D+ h$ O7 P/ e1 ? (1)技术实现容易。
! Z% l% A7 r4 [- X k+ B: b% j (2)二进制运算规则简单。* c# n6 ^# w+ |9 n& k7 p1 H
(3)计算机中二进制数的0、1数码与逻辑代数变量值0与1吻合,所以二进制同时可以使计算机方便地进行逻辑运算。: \ x, Q' ]# f6 R" ^1 m- B
(4)二进制数和十进制数之间的关系亦不复杂。
; K6 x/ n& y1 x% X w; p 2.任意进制计数制和十进制计数制的相互转换
% K, J/ M: a: a1 |( H 十进制数转换成二进制数:$ ]( l) `3 a% l2 X" j
十进制数据转换为二进制数时,因整数部分与小数部分转换算法不同,需要分别进行。
: [; a: T3 k2 S% V (1)整数转换方法———除基取余法
5 r+ A0 q: e5 I; ?; K: }: h2 u, P5 z 十进制整数除以2取余数作最低位系数k 0 ,再取商的继续除以2取余数作高一位的系数,如此继续直到商为0时停止,最后一次的余数就是整数部分最高有效位的二进制系数,依次所得到的余数序列就是转换成的二进制数。因为除数2是二进制的基数,所以这种算法称作“除基取余”法。- O' O9 }& Q T' N
(2)小数转换方法———乘基取整法
$ O. \. K6 p& ?/ y& w' W7 a 把十进制小数乘以2,取其积的整数部分作为对应二进制小数的最高位系数k -1 ,再取积的纯小数部分乘以2,新得积的整数部分又作下一位的系数k -2 ,再取其积的纯小数部分继续乘2,…,直到乘积小数部分为0时停止,这时乘积的整数部分是二进制数最低位系数,每次乘积得到的整数序列就是所求的二进制小数,这种方法每次乘以基数取其整数作系数。所以叫乘基取整法。需要指出的是并不是所有十进制小数都能转换成有限位的二进制小数并出现乘积的小数部分0的情况,有时整个换算过程会无限进行下去,此时可以根据要求并考虑计算机字长,取一定长度的位数后四舍五入,这时得到的二进制数是原十进制数的近似值。. u% H! K0 ^( g$ W9 v3 b; @
一个既有整数部分又有小数的数送入计算机后,由机器把整数部分按“除基取余”法,小数部分按“乘基取整”法分别进行转换,然后合并。任意进制数转换成十进制数:4 b/ h- ^5 W9 L' T f/ E
任意一种进位计数制的数转换成十进制数的方法都是一样的。把任意进制数按权展开成多项式和的形式,把各位的权与该位上的数码相乘,乘积逐项相加,其和便是相应的十进制数。十进制数转换成任意进制数:) ]) O2 w I! x L
十进制数转换成任意进制数与十进制数转换成二进制数的方法完全相同,即整数部分用除基取余的算法,小数部分用乘基取整的方法,然后将整数与小数拼接成一个数作为转换的最后结果。6 W# j. m R3 R0 \2 k! H
3.数的机器码表示" G+ h7 L5 \' h. l- ~, _
符号数的机器码表示:
/ Y% L( [' h0 o/ K6 \. v7 f (1)机器数和真值# {8 V% V8 g3 v9 H
数在计算机中的表示形式统称为机器数。机器数有两个基本特点,其一,数的符号数值化。实用的数据有正数和负数,因为计算机只能表示0、1两种状态,数据的正号“+”或负号“-”,在机器里就用一位二进制的0或1来区别。通常这个符号放在二进制数的最高位,称符号位,以0代表符号“+”,以1代表符号“-”,这样正负符号就被数值化了。因为有符号占据一位,数的形式值就不等于真正的数值,带符号位的机器数对应的数值称为机器数的真值。
: i/ K6 U8 w: U& Y; `3 s3 G, K* l 机器数的另一个特点是二进制的位数受机器设备的限制。机器内部设备一次能表示的二进制位数叫机器的字长,一台机器的字长是固定的。字长8位叫一个字节(Byte),现在机器字长一般都是字节的整数倍,如字长8位、16位、32位、64位。+ g% ]( X3 }4 z0 F" f
符号位数值化之后,为能方便的对机器数进行算术运算、提高运算速度,计算机设计了多种符号位与数值一起编码的方法,最常用的机器数表示方法有三种:原码、反码和补码。. s7 H9 }: Z% W* o$ s
(2)原码表示法和反码表示法
, T% I# b# h! ?5 E8 E7 |$ j$ P 一个机器数X由符号位和有效数值两部分组成。设符号位为X 0 ,X真值的绝对值|X|=X 1 X 2 …X n ,X的机器数原码表示为:# M$ i0 |3 S5 n3 I5 c% l
[X]原 =X0X1X2…Xn
+ n/ {3 I' l' Z( q: H, M 当 X≥0时,X0 =0
; g$ u1 d! G, s+ o2 Z4 D; y2 M' w: | 当 X |