15.1 位运算的含义及应用 1.位的概念 8 I+ @" y8 ~4 Y3 J# w( W
大多数计算机系统的内存储器是由众多的存储单元构成的。在微机中,每个存储单元是1个字节,它由8位二进制数构成,可以表示28=256种信息,各位的编号从0~7,最左边的位(第7位)是最高位,最右边的位(第0位)是最低位。由于二进制本身的特点,各位上的数字不是1,就是0。
1 N; Z$ H$ x i" ]0 y2 Z 本章中的位就是指上述提到的二进制位,本章中的位运算就是指对这些二进制的位进行逻辑运算、移位运算等操作。
6 J/ h( J( I% W$ S& Y% Y- U 2.数的编码 & L* ~$ k) @6 Y" \) g6 V7 x) ?
数在计算机中是以二进制表示的,但是它并不是简单地以它本身的数值的二进制形式来直接表示,而要进行一定的编码,以方便计算机进行处理。常用的编码有原码、反码、补码三种。 8 f/ L7 G4 E$ D5 y5 G
3.真值与原码
" ?. l9 z/ K0 B. b. l/ i. N8 K 我们将一个十进制数的二进制表示称为这个十进制数的真值,它代表了这个十进制数本身的数值。下表列出了一些数的真值。
3 \, t9 ~6 m2 Z7 v) P `) I 真值举例 0 E7 x! V+ W& J7 g9 f8 Z' M+ K0 G
数 二进制表示 真值(16位)
' m0 k- z* T1 A) I9 Q 0 ' U, F: ~8 j6 C- [; h- A
1
; ]( y! O4 y' k% q! j! M7 X 7 0 # r5 g% u: @& ?3 g1 j2 y
1 : p5 v. C% d6 h/ q+ D/ m- V: \. P
111 0000000000000000
: V) o# ^& T8 i* G 0000000000000001 5 S( q9 q9 S3 O; ]
0000000000000111
9 H- W/ f# s+ v, v4 s 15
. r" R* H1 G4 W- X2 O 1111
% _$ E1 O' c* j T0 s7 Q+ X. j2 I 0000000000001111 4 P9 w* ~, b( G( k& A& ~
255 $ ?, i/ b) a, y+ U* u
4095
7 K& H3 e& Z# d$ g2 R. L/ q: K 65535 11111111 & ]; H1 e2 v" G$ J* Z, `, b
111111111111
/ a8 J; N' p1 ?9 O& a 1111111111111111 0000000011111111 & b* J( Q% f+ y* Z
0000111111111111 ' E! _$ e( A0 Q3 _# E- i
1111111111111111 # f/ i( Y6 c' W! U, p# w
用真值表示的数只能是正数,对于负数,要用“一”号标明,例如: * s. Z8 N+ M [: A: V0 M6 L: A: ~
-7的真值为-0000000000000111 -65535的真值为-1111111111111111
: j5 U# B; x6 V 这势必造成用计算机表示数时的不便,故引入了原码表示法。 4 \+ |( ~( V9 R0 Y
在原码表示法中,最高位代表符号位,用“1”表示负数,“0”表示正数;余下的数位用来表示真值的绝对值。
! Y) K5 V5 Q5 |5 H4 t% h( } {9 ]- N& |, `4 @8 {/ m& w5 y, ?) y; y
数字零存在着两种表示方法:+0与-0。 |