二、二进制及数值信息的表示和运算 (一)二进制0 O+ F7 ]4 B. m4 `+ T6 ~; R
1.什么是二进制, h% I& ^' L" p* S" M: m
二进制的基数是“2”,它只使用两个不同的数字符号,即0和1,而且二进制数是“逢二进一”。/ x+ F2 Z# z# I6 u M- e1 X% J
2.二进制数的运算3 h+ T' r3 P$ I6 M
对二进制数有两种不同类型的运算处理:算术运算和逻辑运算。
$ C6 E0 T% @3 k1 q 3.不同进位制数之间的转换
9 ?" U! p- v1 A% j& t0 y! F 十进制整数转换成二进制整数可以采取“除以2取余法”。
3 f# c& q5 k+ Q4 Z7 u7 N! n+ ~% p 十进制小数转换成二进制小数,可以采取“乘以2取整法”,把给定的十进制小数不断乘以2,取乘积的整数部分作为二进制小数的最高位,然后把乘积小数部分再乘以2,取乘积的整数部分,得到二进制小数的第二位,重复上述过程,就可以得到希望的位数,有时得到的是近似值。八进制数转换成二进制数的方法很简单,只要把每一个八进制数字改写成等值的3位二进制数即可,且保持高、低位的次序不变。八进制数字与二进制数的对应关系如下:
! E7 ~8 E1 \/ e6 w6 R& w# m (0)8 =000 (1)8 =001 (2)8 =010 (3)8 =011! O0 I& O! ]0 a2 K4 T4 j
(4)8 =100 (5)8 =101 (6)8 =110 (7)8 =111
- \+ @" T6 F! i! y) p 十六进制数转换成二进制数的方法与八进制数转换成二进制数的方法类似,只要把每一个十六进制数字改写成等值的4位二进制数即可,且保持高、低位的次序不变。十六进制数字与二进制数的对应关系如下:0 M; \& O N8 M& @% ?- I
(0)16 =0000 (1)16 =0001 (2)16 =0010 (3)16 =0011
% r2 {" D2 Y. j& j) p4 d+ }, n+ K (4)16 =0100 (5)16 =0101 (6)16 =0110 (7)16 =0111
* {6 b* j$ h: B2 ~1 x$ f8 \% y- p) t" { (8)16 =1000 (9)16 =1001 (A)16 =1010 (B)16 =1011
3 }, x. Q( n5 r4 e2 F (C)16 =1100 (D)16 =1101 (E)16 =1110 (F)16 =1111) |* j, w% o4 ^' v5 r# J7 E
二进制数转换成八进制数,整数部分从低位向高位方向每3位用一个等值的八进制数来替换,最后不足3位时在高位补0凑满3位;小数部分从高位向低位方向每3位用一个等值的十六进制数来替换,最后不足3位时在低位补0凑满3位。
: [$ m& I8 x: i; `- F' t" P 二进制数转换成十六进制数,整数部分从低位向高位方向每4位用一个等值的十六进制数来替换,最后不足4位时在高位补0凑满4位;小数部分从高位向低位方向每4位用一个等值的十六进制数来替换,最后不足4位时在低位补0凑满4位。" m( v1 ~, A5 L! b
二进制数与八进制数、十六进制数有很简单、直观的对应关系。二进制数太长,书写、阅读、记忆均不方便;八进制、十六进制却像十进制数一样简练,易写易记。必须注意,计算机中只使用二进制一种计数制,并不使用其他计数制,但为了开发程序、调试程序、阅读机器内部代码时的方便,人们经常使用八进制或十六进制来等价地表示二进制,所以大家也必须熟练地掌握八进制和十六进制。, m% m2 g0 |3 W4 Y$ t. z
4.二进制信息的计量单位1 t7 h: ?2 f a8 ?+ k6 d7 v
二进制的每一位(即“0”或“1”)是组成二进制信息的最小单位,称为1个“比特”(bit),或称“位元”,简称“位”,一般用小写的字母“b”表示。比特是计算机中处理、存储、传输信息的最小单位。
' ~2 x R5 d9 |0 e! e 另一种稍大些的二进制信息的计量单位是“字节”(Byte),也称“位组”,一般用大写字母“B”表示。一个字节等于8个比特。* c, Q& b A! ]8 Y/ d, a/ x3 J, E
在信息处理系统中,使用各种不同的存储器来存储二进制信息时,使用的度量单位是比字节或字大得多,经常使用的单位有:
! b0 Y( E9 e, y0 }! | “千字节”(KB),1KB=2 10 字节=1024B
, y% j/ d5 K- m" L3 d5 K “兆字节”(MB),1MB=2 20 字节=1024KB- N" [: g1 Q3 n3 H6 }; r/ _/ Y
“吉字节”(GB),1GB=2 30 字节=1024MB(千兆字节)“太字节”(TB),1TB=2 40 字节=1024GB(兆兆字节)
/ L0 O. v/ a6 n- I 在网络中传输二进制信息时,由于是一位一位串行传输的,传输速率的度量单位与上述单位有所不同,且使用的是十进制。经常使用的速度单位有:( P9 M3 o7 K6 v8 y r
“比特/秒”(b/s),有时也称“bps”。如2400bps(2400b/s),9600bps(9600b/s)等。
+ y& G; @, E: e( c4 x! F “千比特/秒”(kb/s),1kb/s=10 3 比特/秒=1000b/s" q" z: U& Z, M0 ]
“兆比特/秒”(Mb/s),1Mb/s=10 6 比特/秒=1000kb/s1 M" F# ~, x( t6 C2 C
“吉比特/秒”(Gb/s),1Gb/s=10 9 比特/秒=1000Mb/s
J$ \, q2 I& Y Y8 n$ U6 I “太比特/秒”(Tb/s),1Tb/s=10 12 比特/秒=1000Gb/s
) C- J: A8 ~9 ~ 在计算机内部对二进制信息进行运算和处理时,使用的单位除了位(比特)和字节之外,还经常使用“字”作为单位。以80x86或Pentium微处理器为例,处理器可直接进行操作处理的数据单位有5种:位(dit)、字节(Byte)、字(Word)、双字(DoubleWord)和四字(QuadWord)。
7 E% H. r9 G$ Y# C(二)数值信息在计算机内的表示( K8 h" C8 T% j4 c7 O+ \, N/ _9 C8 m
1.整数(定点数)的表示
) h, n$ O- O& U$ L 整数不使用小数点,所以它也叫做“定点数”。计算机中的整数分为两类:不带符号的整数(Unsigned Integer),带符号的整数(Signed Integer)。9 H0 w$ W1 j2 q, ]6 V$ D/ I
不带符号的整数常用于表示地址等正整数,它们可以是8位、16位甚至32位。8个二进位表示的正整数其取值范是0~255(2 8 -1),16个二进位表示的正整数其取值范是0~65535(2 16 -1),32个二进位表示的正整数其取值范是0~2 32 -1。
6 [: Y. q0 h4 L$ W. K+ O 带符号的整数必须使用一个二进位作为其符号位,一般总是最高位(最左面的一位),“0”表示“+”(正数),“1”表示“-”(负数),其余各位则用来表示数值的大小。( N a3 H Z3 \9 j% q
为了内部运算处理方便,负整数在计算机内不止一种表示方法。上面的表示法称为“原码”,另外的两种方法分别叫做“反码”和“补码”。. P5 |8 @( B' g# q) K1 x3 y4 W; Q
2 G$ Y3 a4 s5 P! [7 v$ x1 q' I7 z: K+ x
负数使用反码表示时,符号位仍为“1”,但绝对值部分却正好与原码相反(“0”变为“1”,“1”变为“0”)。 |