发新话题
打印

计算机编码和数制

计算机编码和数制


数 制 数制定义
4 M1 Q( c, i: x9 U2 R! {5 b- _! e- E6 T: \; O0 }5 C5 J
   按进位的原则进行计数, 称为进位计数制,简称"数制"。在日常生活中经常要用到数制,通常以十进制进行计数,除了十进制计数以外,还有许多非十进制的计数方法。例如,60分钟为1小时,用的是60进制计数法;1星期有7天,是7进制计数法;1年有12个月,是12进制计数法。当然,在生活中还有许多其他各种各样的进制计数法。4 t" S! E' ^7 q, p- g5 {- F
   在计算机系统中采用二进制,其主要原因是由于电路设计简单、运算简单、工作可靠、逻辑性强。不论是哪一种数制,其计数和运算都有共同的规律和特点。
# O# |* @, `8 P0 i  · 逢N进一
/ O4 |/ e' d& C' e, i, q5 D. p   N是指数制中所需要的数字字符的总个数,称为基数。例如,十进制数用0、1、2、3、4、5、6、7、8、9等10个不同的符号来表示数值,这个10就是数字字符的总个数,也是十进制的基数,表示逢十进一。/ }* R3 Q9 w! n- B/ c$ |, f
   · 位权表示法
$ c/ o( X/ P; _. {   位权是指一个数字在某个固定位置上所代表的值,处在不同位置上的数字符号所代表的值不同,每个数字的位置决定了它的值或者位权。而位权与基数的关系是:各进位制中位权的值是基数的若干次幂。因此,用任何一种数制表示的数都可以写成按位权展开的多项式之和。如十进制数"634.28"可以表示为:. j0 h" @# R1 X8 P# ^7 i
     (634.08)10 = 6×(10)2 + 3×(10)1+ 4×(10)0 + 0×(10)-1 + 8×(10)-2. D( V/ Z& r8 D% k
   位权表示法的原则是数字的总个数等于基数;每个数字都要乘以基数的幂次,而该幂次是由每个数所在的位置所决定的。排列方式是以小数点为界,整数自右向左0次方、1次方、2次方、…,小数自左向右负1次方、负2次方、负3次方、…。
7 F1 h" G: N4 E1 v9 q9 I. J9 T. [0 A  _" ~" X  Q; O
常用的数制, r3 z, g8 J* R# J0 K, \
0 Q1 g6 T6 T4 C9 q  H
   日常生活中使用的数制有很多种,在计算机中采用二进制。由于二进制数与八进制数和十六进制数具有特殊的关系,所以在计算机应用中常常根据需要使用八进制数或十六进制数。
" L$ `' u$ E3 T! y" `& _   · 十进制数:逢十进一,由数字0~9组成。
* |, x! y9 K8 v7 d# g. u2 ?( O$ `: d   · 二进制数:逢二进一,由数字0、1组成。 0 y$ ^  {# d: w7 R- F  S* T
   · 八进制数:逢八进一,由数字0~7组成。
' |" ?5 U7 D9 z9 Y% y  R   · 十六进制数:逢十六进一,由数字0~9、A~F组成。0 _+ W- f( l$ G& Q
- K# b, Z" D: C. i# U0 s/ T1 m

! U/ w4 _4 c' W8 Z! ^3 L, Q2 O# b& Y+ c
常用数制的基数和数字符号
8 J# Z$ R- b( M( [
8 Q; {3 y8 m6 @, ^" `

% g  U* q: O" \( b6 V8 M4 {
1 X$ \0 F3 {0 _2 ]8 h9 o7 k5 x( m3 }; k. ]  O$ ^- j' M6 y
基 数# N; ?. v8 M+ d& }/ t$ ]6 R
十进制" {8 Z7 y5 U% p0 w/ `3 R
二进制; \( S/ [2 ~  L0 W( Q
八进制9 G) b# g3 A& o- z* t3 S; \
十六进制$ T! S5 j5 x$ g( X# c

" U/ ?, `# E1 \, V+ H' ?数字符号
5 R3 }0 e$ X, }" x0 ~ 9* M+ w/ @: [2 b' g" g6 d
0,1
' C8 c, e  t  K4 j0 ~ 7+ s1 a" A5 O- P  r% r- G/ o" B
0 ~ 9, A, B, C, D, E, F数制间的转换
% J7 W/ a4 K+ I2 }$ `# _, L5 G6 Q, b4 P  v# y8 l
   将数由一种数制转换成另一种数制称为数制间的转换。由于计算机采用二进制,但用计算机解决实际问题时对数值的输入输出通常使用十进制,这就有一个十进制向二进制转换或由二进制向十进制转换的过程。也就是说,在使用计算机进行数据处理时首先必须把输入的十进制数转换成计算机所能接受的二进制数;计算机在运行结束后,再把二进制数转换为人们所习惯的十进制数输出。这两个转换过程完全由计算机系统自动完成不需人们参与。
' T. ]6 Y. |2 J" f2 T   · 余数法 + O# o) [0 s$ j
   十进制整数转换成非十进制整数时采用余数法:用十进制整数除基数,当商是0时,将余数由下而上排列。 5 w& l6 b0 Z: ^3 G
  · 进位法 * g, C4 i# l" V2 n
   十进制小数转换成非十进制小数时采用进位法:用十进制小数乘基数,当积值为0或达到所要求的精度时,将整数部分由上而下排列。1 h" G% i8 M0 @/ D& V4 C
  · 位权法
# ~" F7 f3 ^) r   非十进制数转换成十进制数时采用位权法:把各非十进制数按权展开求和。$ T. O  n. Z4 u$ u6 i) \& X
转换公式:(F)10 =a1×xn-1   a2×xn-2   ...   am-1×x1   am×x0   am 1×x-1   ..。' r. t  ^' O; w; ~# k% R$ [4 a
  · 二进制数与八进制、十六进制数之间的转换方法 & @: S1 W+ b7 ]3 W! X- y
" W; V' h: `& h' {  T
3 f; E3 E! E$ m
  注意:整数从右向左、小数从左向右
% s1 J* n, I4 A2 _ 例题1:将二进制数100110110111.00101转换成八进制数。
4 d8 E8 s' |, V& f7 T/ V7 [& d* ^7 P 结果:( 100 110 110 111 . 001 01 )2 = ( 4667.12 )8 1 i# s) U% B% W+ R) f
例题2:将八进制数604.05转换成二进制数。: ]/ b, w8 c! g! g* C# M3 W! d
结果:(604.05)8 = ( 110 000 100.000 101 )2 $ \1 x- ?( f# z) K$ m: q
例题3:将二进制数11011010101转换成十六进制数。
" b2 x9 Q$ S' E 结果:(11011010101 )2 = ( 6D5 )16 2 j7 M2 x% X: N  f5 @! `
例题4:将十六进制数F05D.7A1 转换为二进制数。 8 _9 C+ x# }6 l8 R; W
结果:(F05D.7A1)16 = (1111 0000 0101 1101.0111 1010 0001)2 : e' _) ?: Q0 H! [1 ?& n  x+ n" }3 q) t
5 j) q* t. x- H) I
数值型数据在计算机中的表示方式& K7 m( D$ k8 `' L
& Z, n$ Q7 M6 w9 K
   计算机处理的数据分为数值型和非数值型两类。数值型数据指数学中的代数值,具有量的含义,且有正负之分、整数和小数之分;而非数值型数据是指输入到计算机中的所有信息,没有量的含义,如数字符号0 ~ 9、大写字母A ~ Z或小写字母a ~ z、汉字、图形、声音及其一切可印刷的符号  、-、!、#、%、》… … 等。由于计算机采用二进制,所以输入到计算机中的任何数值型和非数值型数据都必须转换为二进制。' i+ D$ h; F+ f& G0 S
   任何一个非二进制整数输入到计算机中都必须以二进制格式存放在计算机的存储器中,且用最高位作为数值的符号位,并规定二进制数"0"表示正数,二进制数"1"表示负数,每个数据占用一个或多个字节。这种连同数字与符号组合在一起的二进制数称为机器数,由机器数所表示的实际值称为真值。
* C) u* t8 z0 E' \: e, c6 }! k   即:
% C. |4 I  W& \9 j3 V1 |2 G. ^
0 H  i! L3 B5 ]; W0 j! f2 P/ w, }! v, U' G. b) d) B
机器数的表示方法/ K, v& y9 C* g" E$ S6 P
& S1 p* f8 e2 U5 U% S9 h! c% V, F
   在计算机中,机器数也有不同的表示方法,通常用原码、反码和补码三种方式表示,其主要目的是解决减法运算。任何正数的原码、反码和补码的形式完全相同,负数则各自有不同的表示形式。
- U: z8 W# b  K0 U# t  · 原码
- o. [* g* J; u0 G. y7 z! r4 _    正数的符号位用0表示,负数的符号位用1表示,数值部分用二进制形式表示,这种表示法称为原码。& y7 D% S  [: {
  · 反码
( Q5 U' X" T& B$ m* V; A   正数的反码和原码相同,负数的反码是对该数的原码除符号位外各位取反。
4 t6 c% K/ V; ~9 V5 j  · 补码
- [) F( ]6 J: J   正数的补码和原码相同,负数的补码是反码加1。  }( s7 c( {4 b# p- k2 K8 e  E8 z
带小数点的数的表示方法
9 ?/ t! g( W  r2 {  e1 u) m. Q; _; v   带小数点的数在计算机中用隐含规定小数点的位置来表示。根据小数点的位置是否固定,分为定点数和浮点数二种类型,相应的具有数的定点表示和浮点表示两种方式。
- X# Z( G8 d! J. w  图示如下: 1 ]  y; F# I6 x$ n& t
& v/ F5 r9 a3 J! _6 }
   · 定点整数
4 E. ?9 i6 }9 k0 a2 N2 r   定点整数是指小数点隐含固定在整个数值的最右,符号位右边所有的位数表示的是一个整数,最小数为1。
" ]9 s& M) a6 N& i7 P( W  · 定点小数 ) ?/ d5 Q) T2 l. ^; R( `, }  S
   定点小数是指小数点隐含固定在最高数据位的左边,最大数为0.1。
- A' s0 Q5 N( c2 M  · 浮点数 % i' k* b7 ~& Y7 D
   浮点数是指小数点位置不固定的数,它既有整数部分又有小数部分,如123.55、33.789等。
- r( N. ?; U+ l5 j7 _+ x注意:在计算机中通常把浮点数分成阶码和尾数两部分来表示,其中阶码一般用补码定点整数表示,尾数一般用补码或原码定点小数表示。为保证不损失有效数字,对尾数进行规格化处理,也就是平时所说的科学记数法,即保证尾数的最高位为1,实际数值通过阶码进行调整。
7 C" ^) j  S; Q- g: Q7 J4 w) c% [   浮点数的格式多种多样,例如,某计算机用4个字节表示浮点数,阶码部分为8位补码定点整数,尾数部分为24位补码定点小数,如下图所示。
! B5 @1 J3 V$ b! c  G3 ~- L3 V( `# V3 p  U. P' G: Z; o
  b7 E5 Z3 w* e# ]% h4 A

$ z0 V3 k6 \# ]/ z$ p2 D+ ~4 G# X    其中:阶符表示指数的符号位、阶码表示幂次、数符表示尾数的符号位、尾数表示规格化后的小数值。采用浮点数最大的特点是比定点数表示的数值范围大。



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题