本帖最后由 灰儿 于 2010-10-25 20:11 编辑
计算机内部是以二进制形式表示数据和进行运算的;计算机内的地址等信号常用十六进制来表示,而人们日常又习惯用十进制来表示数据。这样要表示一个数据就要选择一个适当的数字符号来规定其组合规律,也就是要确定所选用的进位计数制。各种进位制都有一个基本特征数,称为进位制的“基数”。基数表示了进位制所具有的数字符号的个数及进位的规律。下面就以常用的十进制、二进制、八进制和十六进制为例,分别进行叙述。
一.常用的三种计数制
1.十进制(Decimal)
2.二进制(Binary)
3.十六进制(Hexadecimal)
二.3种计数制之间的相互转换
1.二进制转十进制
本人有个更直接的方法,例如二进制数1000110转成十进制数可以看作这样:
数字中共有三个1 即第二位一个,第三位一个,第七位一个,然后十进制数即2的2-1次方+2的3-1次方+2的7-1次方即(1000110)2=2+4+64=(70)10
次方数即1的位数减1。如此计算只需要牢记2的前十次方即可在此本人为大家陈述一下:
2的0次方是1
2的1次方是2
2的2次方是4
2的3次方是8
2的4次方是16
2的5次方是32
2的6次方是64
2的7次方是128
2的8次方是256
2的9次方是512
2的10次方是1024
2的11次方是2048
2的12次方是4096
2的13次方是8192
2的14次方是16384
2的15次方是32768
在这里仅为您提供前15次方,若需要更多请自己查询。
2. 十进制转换成二进制的方法
十进制数转换成二进制数一般分为两个步骤,即整数部分的转换和小数部分的转换。
(1)整数部分的转换
除2取余法:这种方法是由于D10=N2=dn-1×2n-1十dn-2×2n-2十…d1×21十d0×20,所以具体方法是把给定的十进制整数除以2,取其余数作为二进制整数最低位的系数do,然后继续将整数部分除以2,所得余数作为二进制整数次低位的系数d1,一直重复下去,最后可以得到二进制整数部分。
例如,将(327)10转换成二进制数。
327 余数 各项系数
除以2= 163 … 1 d0
…… 81 … 1 d1
…… 40 … 1 d2
…… 20 … 0 d3
…… 10 … 0 d4
…… 5 … 0 d5
…… 2 … 1 d6
…… 1 … 0 d7
…… 0 … 1 d8
所以,(327)10=d8 d7 d6 d5 d4 d3 d2d1 d0=(101000111)2。
此方法可扩展为陈R取余法。如将R设为16,则可将十进制整数转变为十六进制整数。
减权定位法:因为D10=N2=dn-1×2n-1十dn-2×2n-2十…d1×21十d0×20,所以二进制多项式中的每一项都有自己的权值。若该项系数值为d i=0,则该项值为0,否则d i应为1。根据这一对应关系,可提出减权定位的转换方法:将十进制数依次从二进制高位权值进行比较:若够减则对应位d i=1,减去该位权值后再往下比较;若不够减则对应值d i=0,越过该位与低一位的权值比较,如此进行直到余数为0为止。
例如,将(327)10转换成二进制数。因为512(29)>327>256(28),所以从权值256对应值开始比较。
减权比较 di 位权
327-256=71 1 28
71<128 0 27
71-64=7 1 26
7<32 0 25
7<16 0 24
7<8 0 23
7-4=3 1 22
3-2=1 1 21
1-1=0 1 20
所以,(327)10=(101000111)2。
(2)小数部分的转换
转换的方法是采用乘2取整数表示法。由于D10=d-1×2-1十d-2×2-2十…d-m×2-m,所以具体方法是把给定的十进制小数乘以2,取其整数部分作为二进制小数的小数点后的第一位系数;然后再将乘积的小数部分继续乘以2,取所得积的整数部分作为小数后的第二位系数;依次重复做下去,就可以得到二进制小数部分。
例如,将(0.8125) 10。转换成二进制小数。
整数部分 系数部分
2×0.8125=1.625 1 d-1=1
2×0.625=1.25 1 d-2=1
2×0.25=0.5 0 d-3=0
2×0.5=1.0 1 d-4=1
所以,(0.8125)10=d0 d-1 d-2 d-3 d-4= (0.1101)2。
在计算中可以按照所需的小数点位数,取其结果位近似值。
此方法可以扩展为乘R取整法.如将R变为16,则可将十进制小数部分直接变为十六进制小数。
3.二进制与十六进制的转换
(1)二进制转换成十六进制
4位二进制数的所有组合可表示十六进制数的16个代码,它们之间的对应关系如下:
二进制: 0000 0001 0010 0011 0100 0101 0110 0111
十六进制: 0 1 2 3 4 5 6 7
二进制: 1000 1001 1010 1011 1100 1101 1110 1111
十六进制: 8 9 A B C D E F
进制转换的具体方法:从小数点开始,分别向左、向右,每4位二进制数为一组用十六进制数值来书写。若小数点左侧位数不是4的倍数,则最左侧用0补充;若小数点右侧位数不是4的倍数,则最右侧用0补充。
例如,(110110111.01101)2=(0001 1011 0111.0110 1000) 2=(1B7.68) 16。
(2)十六进制转换成二进制
具体的转换方法是:将每个十六进制数用4位二进制数来书写,转化后最左侧或者最右侧的0在书写的时候可以省去。例如:
(7AC.DE) 16=(111 1010 1100.1101 111)2
例1:把(5/16) 10转换成二进制数。
解:5/16=5×2-4=(101) 2×(0.0001) 2=(0.0101) 2
小数点向左移4位等于乘以2-4。
例2:把(19.125) 10转换成二进制数、十六进制数。
解:首先把整数部分(19) 10转换成二进制数:
(19) 10=16十2十1=24十21十20=(10011) 2
再把小数部分(0.125) 10转换成二进制数:
0.125×2=0.25 0
0.25×2=0.5 0
0.5× 2=1 1
所以,(0.125) 10=(0.001) 2。
把整数与小数部分合起来结果为
(19.125) 10=(10011.001) 2=(13.2) 16 |