二进制,十进制,十六进制之间的相互转换

请指明公式。
1楼粘贴,请不要举例子,有公式,不用怀疑,怀疑得就算写出来,也不会被选作正确答案的。
不要说 其它的差不多
意加西 16进制部分说得再详细点就好了!

一、正数

在高速发展的现代社会,计算机浩浩荡荡地成为了人们生活中不可缺少的一部分,帮助人们解决通信,联络,互动等各方面的问题。今天我就给大家讲讲与计算机有关的“进制转换”问题。
我们以(25.625)(十)为例讲解一下进制之间的转化问题
说明:小数部份的转化计算机二级是不考的,有兴趣的人可以看一看
1. 十 -----> 二
(25.625)(十)
整数部分:
25/2=12......1 余数
12/2=6 ......0 这里被整除了,所以0
6/2=3 ......0
3/2=1 ......1
1/2=0 ......1
然后我们将余数按从下往上的顺序书写就是:11001,那么这个11001就是十进制25的二进制形式
小数部分:
0.625*2=1.25
0.25 *2=0.5
0.5 *2=1.0
然后我们将整数部分按从上往下的顺序书写就是:101,那么这个101就是十进制0.625的二进制形式
所以:(25.625)(十)=(11001.101)(二)
十进制转成二进制是这样:
把这个十进制数做二的整除运算,并将所得到的余数倒过来.
例如将十进制的10转为二进制是这样:
(1) 10/2,商5余0;
(2) 5/2,商2余1;
(3)2/2,商1余0;
(4)1/2,商0余1.
(5)将所得的余数侄倒过来,就是1010,所以十进制的10转化为二进制就是1010
2. 二 ----> 十

(11001.101)(二)
整数部分: 下面的出现的2(x)表示的是2的x次方的意思
1*2(4)+1*2(3)+0*2(2)+0*2(1)+1*2(0)=25
小数部分:
1*2(-1)+0*2(-2)+1*2(-3)=0.625
所以:(11001.101)(二)=(25.625)(十)
二进制转化为十进制是这样的:
这里可以用8421码的方法.这个方法是将你所要转化的二进制从右向左数,从0开始数(这个数我们叫N),在位数是1的地方停下,并将1乘以2的N次方,最后将这些1乘以2的N次方相加,就是这个二进数的十进制了.
还是举个例子吧:
求110101的十进制数.从右向左开始了
(1) 1乘以2的0次方,等于1;
(2) 1乘以2的2次方,等于4;
(3) 1乘以2的4次方,等于16;
(4) 1乘以2的5次方,等于32;
(5) 将这些结果相加:1+4+16+32=53
3. 十 ----> 八
(25.625)(十)
整数部分:
25/8=3......1
3/8 =0......3
然后我们将余数按从下往上的顺序书写就是:31,那么这个31就是十进制25的八进制形式
小数部分:
0.625*8=5
然后我们将整数部分按从上往下的顺序书写就是:5,那么这个0.5就是十进制0.625的八进制形式
所以:(25.625)(十)=(31.5)(八)
4. 八 ----> 十
(31.5)(八)
整数部分:
3*8(1)+1*8(0)=25
小数部分:
5*8(-1)=0.625
所以(31.5)(八)=(25.625)(十)
5. 十 ----> 十六
(25.625)(十)
整数部分:
25/16=1......9
1/16 =0......1
然后我们将余数按从下往上的顺序书写就是:19,那么这个19就是十进制25的十六进制形式
小数部分:
0.625*16=10(即十六进制的A或a)
然后我们将整数部分按从上往下的顺序书写就是:A,那么这个A就是十进制0.625的十六进制形式
所以:(25.625)(十)=(19.A)(十六)
6. 十六----> 十
(19.A)(十六)
整数部分:
1*16(1)+9*16(0)=25
小数部分:
10*16(-1)=0.625
所以(19.A)(十六)=(25.625)(十)
如何将带小数的二进制与八进制、十六进制数之间的转化问题
我们以(11001.101)(二)为例讲解一下进制之间的转化问题
说明:小数部份的转化计算机二级是不考的,有兴趣的人可以看一看
1. 二 ----> 八
(11001.101)(二)
整数部分: 从后往前每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:
001=1
011=3
然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式
小数部分: 从前往后每三位一组,缺位处用0填补,然后按十进制方法进行转化, 则有:
101=5
然后我们将结果部分按从上往下的顺序书写就是:5,那么这个5就是二进制0.101的八进制形式
所以:(11001.101)(二)=(31.5)(八)
2. 八 ----> 二
(31.5)(八)
整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:
1---->1---->001
3---->11
然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式
说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了!
小数部分:从前往后每一位按十进制转化方式转化为三位二进制数,缺位处用0补充 则有:
5---->101
然后我们将结果按从下往上的顺序书写就是:101,那么这个101就是八进制5的二进制形式
所以:(31.5)(八)=(11001.101)(二)
3. 十六 ----> 二
(19.A)(十六)
整数部分:从后往前每位按十进制转换成四位二进制数,缺位处用0补充 则有:
9---->1001
1---->0001(相当于1)
则结果为00011001或者11001
小数部分:从前往后每位按十进制转换成四位二进制数,缺位处用0补充 则有:
A(即10)---->1010
所以:(19.A)(十六)=(11001.1010)(二)=(11001.101)(二)
4. 二 ----> 十六
(11001.101)(二)
整数部分:从后往前每四位按十进制转化方式转化为一位数,缺位处用0补充 则有:
1001---->9
0001---->1
则结果为19
小数部分:从前往后每四位按十进制转化方式转化为一位数,缺位处用0补充 则有:
1010---->10---->A
则结果为A
所以:(11001.101)(二)=(19.A)(十六)
[编辑本段]二、负数
负数的进制转换稍微有些不同。
先把负数写为其补码形式(在此不议),然后再根据二进制转换其它进制的方法进行。
例:要求把-9转换为八进制形式。则有:
-9的补码为11111001。然后三位一划
001---->1
111---->157
011---->3
然后我们将结果按从下往上的顺序书写就是:31571,那么31571就是十进制数-9的八进制形式。
补充:
最近有些朋友提了这样的问题“0.8的十六进制是多少?”
我想在我的空间里已经有了详细的讲解,为什么他还要问这样的问题那
于是我就动手算了一下,发现0.8、0.6、0.2... ...一些数字在进制之间的转化
过程中确实存在麻烦。
就比如“0.8的十六进制”吧!
无论你怎么乘以16,它的余数总也乘不尽,总是余8
这可怎么办啊,我也没辙了
第二天,我请教了我的老师才知道,原来这么简单啊!
具体方法如下:
0.8*16=12.8
0.8*16=12.8
.
.
.
.
.
取每一个结果的整数部分为12既十六进制的C
如果题中要求精确到小数点后3位那结果就是0.CCC
如果题中要求精确到小数点后4位那结果就是0.CCCC
现在OK了,我想我的朋友再也不会因为进制的问题烦愁了!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-02-14
只有算法,就是计算的步骤方法,很难写成一个简单的公式。

举例来说:
二进制转换为十进制
如101011=1x1+1x2+0x4+1x8+0x16+1x32=45
从最后一位往前,用这个位上的0或者1去乘它的全,从后往前要乘的数依次是1,2,4,8,16,32,64,128,256,512,1024.......就是2的0次,2的1次,2的2次,依次类推,最后就得到十进制那个数了

反过来,十进制转化成二进制
如54
步骤如下:
54/2=27余0
27/2=13余1
13/2=6余1
6/2=3余0
3/2=1余1
1/2=0余1
因此要求的二进制数就是110110
就是说用54不断除2,带余数,直到最后的商是0,然后把得到的余数倒着写出来就可以了:即最后得到的余数是最高位,最早得到的余数是最低位。

明白了二进制与十进制之后,其它的差不多。
需要说明的是在十六进制中,除了0123456789这十个数码外,用ABCDEF表示10,11,12,13,14,15
第2个回答  2009-02-14
八进制和十六进制与二进制的转换十分方便。
转换关系如下所示
0000(二进制)=0(十六进制)下同
0001=1
0010=2
0011=3
.........
1010=A
1011=B
1100=C
1101=D
1110=E
1111=F
这样四位2进制一组转换成一位十六进制。
3位2进制一组转换成1位八进制。
从低位开始分组。剩下不足的补零计算。(在前头补啊!)
8和16的转换类似。小数转换的时候从小数点后边的分组要从高位到低位。

10进制转换2进制:
把10进制数除以2,余数写下来继续除吧余数从下到上排列就可以得到二进制结果。
例如
18 余数
9....0
4....1
2....0
1....0
0....1
18的二进制就是10010

10进制转换8,16,都是先换成2进制然后分组换成8.16。

二进制换10进制:
0001=1
0010=2
0011=3
0100=4
0101=5
0110=6
0111=7
1000=8
1001=9
1010=10
1011=11
1100=12
1101=13
1110=14
10000=16
举例:
10010011换10进制
10000000=128
10000=16
10=2
1=1
加一块。
128+16+2+1=?就是10进制。
第3个回答  2009-02-22
只要有电脑就可以计算
开始-程序-附件-计算器-查看-科学型
出现了把 呵呵 这样算就很简单

比如说把2进制 10101 转换正十六进制
先点到二进制上 打上 10101 在点一下十六进制 出现了21

OK 就是这样本回答被提问者采纳
第4个回答  2009-02-14
1010=10
1111=15
1101=13
相似回答