进制转换问题

真惭愧啊,竟然忘了进制之间怎么转换了:

在网上搜了下,可参考这个:http://blog.csdn.net/woodfish2117/archive/2007/01/15/1483968.aspx

位(bit)  一位二进制数,又称比特

字节(byte)  1B = 8b  内存存储的最小单元

字长:同一时间内,计算机能处理的二进制位数

字长决定了计算机的运算精度,字长越长,计算机的运算精度就越高。因此,高性能的计算机,其字长较长,而性能较差的计算机,其字长相对要短一些。   
其次,字长决定了指令直接寻址的能力。一般机器的字长都是字节的1、2、4、8倍。微机的字长为8位、16位、32位、64位,如286机为16位机,386和486是32位机,最新推出的PIII为64位高档机。   
字长也影响机器的运算速度,字长越长,运算速度越快。
字:是计算机中处理数据或信息的基本单位。一个字由若干字节组成,通常将组成一个字的位数叫做该字的字长。

进制
一位八进制数字可以用三位二进数来表示,一位十六进制数可以用四位二进数来表示,所以二进制和八进制、十六进制间的转换非常简单


如:将(1010111.01101)2转换成八进制数

    1010111.01101=001 010 111. 011 010

               ↓ ↓ ↓ ↓ ↓

                 1  2    7     3    2

所以(1010111.011.1)2=(127.32)8

 

将(327.5)8转换为二进制

3       2      7.     5

↓     ↓    ↓    ↓

011    010   111.   101

    所以(327.5)8=(11010111.101)2

将(110111101.011101)2转换为十六进制数

(110111101.011101)2=0001   1011   1101.   0111   0100

                      ↓      ↓      ↓       ↓       ↓

                       1   B       D        7      4

所以(110111101.011101)2=(1BD.74)16

 

将(27.FC)16转换成二进制数

  2       7.     F        C   

↓    ↓    ↓     ↓   

0010  0111  1111   1100

所以(27.FC)16=(100111.111111)2

 二进制表示

原码:每一位表示符号

反码:正数同原码,负数除符号外其它位相反

补码:正数同原码,负数除符号外,反码+1得到

地址总线:
地址总线宽度决定了CPU可以访问的物理地址空间,简单地说就是CPU到底能够使用多大容量的内存

8位地址总线:一个8位的二进制数最多能表示2的8次方个数据,从00000000到11111111,十进制为0-255,这样,8位地址总线最大能区分的地址是从0到255。我们说他的寻址能力为256, 即256字节

16位地址总线:64K

20位: 1M

32位: 4G

上面是不同地址总线,能访问的物理内存。注意:计算时,如16位地址总线的寻址能力不是16个1组成的二进制数的结果,而是要再加上1,因为前面有个00000000000000000   
即2的16次方, 而16个1组成的二进制数为2的16次方减1

其他:

十进制转二进制:
用2辗转相除至结果为1
将余数和最后的1从下向上倒序写 就是结果
例如302
302/2 = 151 余0
151/2 = 75 余1
75/2 = 37 余1
37/2 = 18 余1
18/2 = 9 余0
9/2 = 4 余1
4/2 = 2 余0
2/2 = 1 余0
故二进制为100101110

二进制转十进制
从最后一位开始算,依次列为第0、1、2...位
第n位的数(0或1)乘以2的n次方
得到的结果相加就是答案
例如:01101011.转十进制:
第0位:1乘2的0次方=1
1乘2的1次方=2
0乘2的2次方=0
1乘2的3次方=8
0乘2的4次方=0
1乘2的5次方=32
1乘2的6次方=64
0乘2的7次方=0
然后:1+2+0
+8+0+32+64+0=107.
二进制01101011=十进制107.
 

一、二进制数转换成十进制数
由二进制数转换成十进制数的基本做法是,把二进制数首先写成加权系数展开式,然后按十进制加法规则求和。这种做法称为"按权相加"法。

二、十进制数转换为二进制数
十进制数转换为二进制数时,由于整数和小数的转换方法不同,所以先将十进制数的整数部分和小数部分分别转换后,再加以合并。
1. 十进制整数转换为二进制整数
十 进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2去除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数, 如此进行,直到商为零时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。

2.十进制小数转换为二进制小数
十进制小数转换成二进制小数采用"乘2取整,顺序排列"法。具体做法是:用2乘十进制小数,可以得到积,将积的整数部分取出,再用2乘余下的小数部分,又得到一个积,再将积的整数部分取出,如此进行,直到积中的小数部分为零,或者达到所要求的精度为止。
然后把取出的整数部分按顺序排列起来,先取的整数作为二进制小数的高位有效位,后取的整数作为低位有效位。
回答者:HackerKinsn - 试用期 一级 2-24 13:31

1.二进制与十进制的转换
(1)二进制转十进制<BR>方法:"按权展开求和"
例:
(1011.01)2 =(1×23+0×22+1×21+1×20+0×2-1+1×2-2)10
=(8+0+2+1+0+0.25)10
=(11.25)10
(2)十进制转二进制

· 十进制整数转二进制数:"除以2取余,逆序输出"
例: (89)10=(1011001)2
2 89
2 44 …… 1
2 22 …… 0
2 11 …… 0
2 5 …… 1
2 2 …… 1
2 1 …… 0
0 …… 1
· 十进制小数转二进制数:"乘以2取整,顺序输出"
例:
(0.625)10= (0.101)2
0.625
X 2
1.25
X 2
0.5
X 2
1.0
2.八进制与二进制的转换
例:将八进制的37.416转换成二进制数:
37 . 4 1 6
011 111 .100 001 110
即:(37.416)8 =(11111.10000111)2
例:将二进制的10110.0011 转换成八进制:
0 1 0 1 1 0 . 0 0 1 1 0 0
2 6 . 1 4
即:(10110.011)2 =(26.14)8
3.十六进制与二进制的转换<BR>例:将十六进制数5DF.9 转换成二进制:
5 D F . 9
0101 1101 1111.1001
即:(5DF.9)16 =(10111011111.1001)2

例:将二进制数1100001.111 转换成十六进制:
0110 0001 . 1110
6 1 . E
即:(1100001.111)2 =(61.E)16

补充一个二进制小数转换为十进制的方法:如0.1101= 1*2(-1) + 1 * 2(-2) + 1* 2(-4) = 0.8125

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值