一、 二进制与十进制之间的转换
a.二进制转十进制(不分整数和小数从最后一位算起,每一位上的数乘以2的几次方,这个次数由这个数字所在的位置决定,从零位开始,然后相加)
01101011.001 转十进制:
第-3 1乘2的-3次方=0.125
第-2 0乘2的-2次方=0
第-1 0乘2的-1次方=0
第0位 1乘2的0次方=1
1 1乘2的1次方=2
2 0乘2的2次方=0
3 1乘2的3次方=8
4 0乘2的4次方=0
5 1乘2的5次方=32
6 1乘2的6次方=64
7 0乘2的7次方=0
然后:1+2+0+8+0+32+64+0=107.125
01101011=107
b.十进制转二进制
(整数:除2取余法是一个连续除2的过程,直到商出现0时位置,余数反向排列;)
整数23 转二级制:
23除2商11余1
11除2商5余1
5除2商2余1
2除2商1余0
1除2商0余1
然后把余数反向排列 :23=10111
(小数:乘2取整法,即将小数部分乘以2,然后取整数部分,剩下的小数部分继续乘以2,然后取整数部分,剩下的小数部分又乘以2,一直取到小数部分
为零为止。如果永远不能为零,就同十进制数的四舍五入一样,按照要求保留多少位小数时,就根据后面一位是0还是1,取舍,如果是零,舍掉,如果是1,向入一位。换句话说就是0舍1入。读数要从前面的整数读到后面的整数)
0.125 转二进制
第一步,将0.125乘以2,得0.25,则整数部分为0,小数部分为0.25;
第二步, 将小数部分0.25乘以2,得0.5,则整数部分为0,小数部分为0.5;
第三步, 将小数部分0.5乘以2,得1.0,则整数部分为1,小数部分为0.0;
第四步,读数,从第一位读起,读到最后一位,即为0.001。
23.125 转二进制10111.001
0.45 转二进制(保留到小数点第四位)
第一步,将0.45乘以2,得0.9,则整数部分为0,小数部分为0.9;
第二步, 将小数部分0.9乘以2,得1.8,则整数部分为1,小数部分为0.8;
第三步, 将小数部分0.8乘以2,得1.6,则整数部分为1,小数部分为0.6;
第四步, 将小数部分0.6乘以2,得1.2,则整数部分为1,小数部分为0.2; 算到这一步就可以了,因为只需要保留四位小数
第五步, 将小数部分0.2乘以2,得0.4,则整数部分为0,小数部分为0.4;
第六步, 将小数部分0.4乘以2,得0.8,则整数部分为0,小数部分为0.8;后面会一直循环重复
第七步, 将小数部分0.8乘以2,得1.6,则整数部分为1,小数部分为0.6;
。。。。。。
读整数不分,从第一位读起,读到最后一位,即为0.0111。
23.45(保留到小数点第四位)10111.0111
二、 二进制与八进制之间的转换(基础还是二进制和十进制之间的转换)
(取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,得到 的数就是一位八位二进制数,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。如果向左(向右)取三位后,取到最高(最低)位 时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位)这里的最高位,最低位和十进制的一样,前面的是最高位,后面的是最低位
三位二进制表示一位八进制, 因为三位二进制数最大(111)的十进制数也就是7,所以就保证每位数都是0-7之间的数
a.二进制转八进制
1100100 拆分成 : 001 100 100 001 1 这是由二级制转换成十进制得来的 0*2^2 + 0*2^1 + 1*2^0 = 1 100 4 1*2^2 + 0*2^1 + 0*2^0 = 4 100 4 1*2^2 + 0*2^1 + 0*2^0 = 4 依次读下来就是 144 1100100 =144
b.八进制转二级制(脑海中有个概念,那就是你要用十进制转二进制先算出0-7每个数的二级制数表达方式,还是一样不够三位补零)
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
有了上面这个表,随便报一个数653524,你要明白八进制上的一位就对应三位二进制,653524有6位,所以二进制数就有3*6=18位,6用110代替,5用101代替,依次下来就是
110 101 011 101 010 100
三、 二进制与十六进制之间的转换(基础还是二进制和十进制之间的转换)
四位二进制表示一位十六进制, 因为四位二进制数最大(1111)也就是十进制的表示法15即十六进制的表示法F,所以就保证每位数都是0-F之间的数
a.二进制转十六进制
同样还是上面这个数:1100100 拆分 0110 0100 0110 6 0100 4 1100100 = 64 b.十六进制转二进制(脑海中有个概念,那就是你要先算出0-F每个数的二级制数表达方式,还是一样不够四位补零) 1-0001 2-0010 3-0011 4-0100 5-0101 6-0110 7-0111 8-1000 9-1001 A-1010 B-1011 C-1100 D-1101 E-1110 F-1111 四、 十进制与十六进制之间的转换(其算法和二进制和十进制之间的算法一样只是,由2变成了16) 十进制与八进制之间的转换(其算法和二进制和十进制之间的算法一样只是,由2变成了8)
a.十进制转十六进制 123 转成十六进制 123除16商7余B 7除16商0余7结果就是7B b.十六进制转二进制
十六进数 2AF5
第0位: 5 * 16^0 = 5 第1位: F * 16^1 = 240 第2位: A * 16^2 = 2560 第3位: 2 * 16^3 = 8192
5 * 16^0 + F * 16^1 + A * 16^2 + 2 * 16^3 = 10997
2AF5 = 10997
五、其他:八进制与十六进制、八进制与十进制之间的转换利用上面的关系就很简单了,比如八进制先换成二进制,再由二进制转换成十六进制
各进制与十进制之间的转换 有一个公式:二进制数、八进制数、十六进制数的各位数字分别乖以各自的基数的(N-1)次方,其和相加之和便是相应的十进制数 比如八进制数: 34 = 3*8^1 + 4*8^0 = 28
六、不常用进制(所谓几进制就是逢几进1,退1还几)
三进制、四进制、五进制、。。。、n进制
三进制:
0 0
1 1
2 10
四进制:
0 0
1 1
2 10
3 11
五进制:
0 0
1 1
2 10
3 11
4 100
六进制:
0 0
1 1
2 10
3 11
4 100
5 101
七进制:
0 0
1 1
2 10
3 11
4 100
5 101
6 110
。。。
n进制:脑海中有个概念,那就是你要用十进制转二进制先算出0-(n-1)每个数的二级制数表达方式,还是一样如果不够(log以2为底n的对数,不足1,结果则为1;大于1并且有小数,加1,取整数)位数,,左边补上(前面的结果-1)个零
比如四进制就是,那就是你要用十进制转二进制先算出0-3每个数的二级制数表达方式,还是一样不够补(log以2为底4的对数)位数,左边补上(2-1)个零
比如五进制就是,那就是你要用十进制转二进制先算出0-4每个数的二级制数表达方式,还是一样不够补(log以2为底5的对数+1)位数,左边补上(3-1)个零
比如八进制就是,那就是你要用十进制转二进制先算出0-7每个数的二级制数表达方式,还是一样不够补(log以2为底8的对数)位数,左边补上(3-1)个零
本文转自:http://www.cnblogs.com/o-andy-o/p/3410356.html
相关推荐
进制数转换二进制八进制十进制十六进制之间转换方法PPT学习教案.pptx
Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制之间的转换Java SE程序 进制...
这是一个可以实现任意进制之间转换的C语言代码。
二进制数值至八进制,十进制,十六进制字符串转换; 十六进制数值至二进制,八进制,十进制字符串转换; 十进制数值至二进制,八进制,十六进制字符串转换。
ASCII及进制转换4.0版 可以完成ascii码与16进制之间转换 及16 10 8 2进制之间的转换
进制之间的转换函数,包括: 1.十进制转换为二进制 2.16进制转ASCII码 3.十进制转换为十六进制 4.16进制转ASCII码 5.二进制转换为十进制 6.二进制转换为十进制,定长转换 7.二进制转换为十六进制,定长转换 8.八进制...
总结进制数转换二进制八进制十进制十六进制之间转换方法PPT学习教案.pptx
二进制八进制十进制十六进制之间的转换算法.pdf
所以使用程序读出的都是一个16进制字符串,这时就需要自己手动根据数据类型转换成10进制自己需要的数,自已编写的一个小工具,完美实现各种数据类型16进制与10进制之间的转换,包括Byte、Word、DWord、Int、Dint、...
1)实现十进制与二进制之间的相互转换; (2) 实现十进制与十六进制之间的相互转换; (3) 实现二进制与十六进制之间的相互转换; (4) 能进行不同进制转换的选择。
ascii 16进制 10进制之间转换 很不错的一个小软件!避免手动查询翻阅的麻烦!
把一个十进制整数转换为2至9进制之间的任意进制数输出
已实现的功能:二进制与十六进制字符串之间的转换。 未实现的功能:二进制与ASCII、十六进制与ASCII字符串之间的转换。 未实现的原因:对于可见字符如‘0’-‘9’‘a’-‘z’等的实现比较简单,但是对于不可见字符...
用数据结构栈实现的数制转换,将十进制数转换为二进制,八进制,十六进制。
powerbuilder 9字符串转换进制源码
设计算法把一个十进制整数转换为二到九进制之间的任意进制数输出(链式栈)
设计算法把一个十进制整数转换为二至九进制之间的任意进制数输出。
SQL语句写的各进制之间互相转换,如二进制转换十进制,八进制转换十六进制等等
主要实现二进制和十进制的数字转换的源代码,void CharToHex(char * dest, char * buffer , int len)中实现了字母间的二进制转换
C#进制转换函数 2,8,10,16进制之间的转换