不同进制之间的转换

  1. 参考文章地址:http://www.cnblogs.com/o-andy-o/p/3410356.html

  2. 一、 二进制与十进制之间的转换

          1.     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. 然后: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 100001 1 这是由二级制转换成十进制得来的  0*2^2 +  0*2^1 + 1*2^0 = 1100 4                             1*2^2 + 0*2^1 + 0*2^0 = 4100 4                             1*2^2 + 0*2^1 + 0*2^0 = 4依次读下来就是 1441100100 =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 60100 41100100  = 64

b.十六进制转二进制(脑海中有个概念,那就是你要先算出0-F每个数的二级制数表达方式,还是一样不够四位补零)1-00012-00103-00114-01005-01016-01107-01118-10009-1001A-1010B-1011C-1100D-1101E-1110F-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 = 109972AF5 = 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)个零
时间: 2024-10-22 18:02:00

不同进制之间的转换的相关文章

Python3进制之间的转换

Python3进制之间的转换 在Python里面实现进制之间的转换是非常方便的,有专门的函数来进行这个操作: 下面直接上代码: # 进制之间的转换 a = 10 # 转换为二进制 print(bin(a)) # 结果为0b1010 # 转换为八进制 print(oct(a)) # 结果为0o12 # 转换为八进制 print(hex(a)) # 结果为0xa # 一个非十进制的数转换为十进制 print(int(0b1010)) # 结果为10 原文地址:https://www.cnblogs.

C语言博客(6)编程基础之进制之间的转换

在本人的C语言博客的内容中,前面两篇随笔对二进制.八进制和十六进制进行了说明,接下来讲一下不同进制之间的数字是如何转换的,这在编程中经常会用到,尤其是C语言. 其他进制向十进制转换 在C语言学习中,二进制.八进制和十六进制向十进制转换都是非常容易的,就是"按权相加". 所谓"权",也即"位权".例如,十进制第1位的位权为100=1,第2位的位权为101=10,第3位的位权为102=100:而二进制第1位的位权为20=1,第2位的位权为21=2,第

(2、8、10、16)进制之间的转换的背后的故事

今天在涉及到String型转换为Int型时候想到的一个问题,带符号数的转换问题,发现需要再回头看看进制的问题.找到点资料,觉得还可以,借取一段放在这里与备后查. 16进制:用16作为基数的计数系统.用数字0-9和字母a-f(或其大写A-F)表示10到15. 十六进制数转换成十进制数 2进制,用两个阿拉伯数字:0.1: 8进制,用八个阿拉伯数字:0.1.2.3.4.5.6.7: 10进制,用十个阿拉伯数字:0到9: 16进制,用十六个阿拉伯数字……等等,阿拉伯人或说是印度人,只发明了10个数字啊?

计算机各进制之间的转换

今天翻了一本计算机基础的书籍,其中十进制.二进制.八进制.十六进制之间的转换挺有意思的,也容易犯糊涂,特温故而知新. 十进制数制系统 十进制数制系统包括 10 个数字:0.1.2.3.4.5.6.7.8.9 基为:10        逢十进一,如3+7=10,20+80=100 二进制数制系统 计算机中使用二进制表示数据 二进制包括两个符号:0和1 二进制逢二进一:(1+1)2=(10)2 二进制的基为2 示例:1000101100101101 八进制数制系统 用于缩短二进制的数字长度 八进制基

python中的2、8、16、10进制之间的转换

python除法的坑 众所周知,python除法有两个运算符,一个是/,还有一个是//,那么这两个有什么不同之处呢? 从图片可以得知,使用//返回一个float类型,而使用/返回一个int类型.我们总结一下: // 是整除,自动转型位float / 除法 那么如何使用整除运算符返回一个float类型呢? 我们只要让除数和被除数任意一个为float类型进行运算返回就是一个float类型的值. 10.2.8.16进制 像0,1,2,3,4......10这样的数就是10进制,并且满十位进一位,即逢十

java中进制之间的转换

//十进制转其他进制 Integer.toHexString(10); //将10转换为十六进制,返回字符串类型 Integer.toOctalString(10); //将10转为八进制,返回字符串类型 Integer.toBinaryString(10); //将10转为二进制,返回字符串类型 //其他进制转十进制 //十六进制转十进制,例如:0xFFFF Integer.valueOf("FFFF",16).toString(); //valueOf()方法返回Integer类型

c# 不同进制之间的转换

1.请问c#中如何将十进制数的字符串转化成十六进制数的字符串 //十进制转二进制Console.WriteLine("十进制166的二进制表示: "+Convert.ToString(166, 2));//十进制转八进制Console.WriteLine("十进制166的八进制表示: "+Convert.ToString(166, 8));//十进制转十六进制Console.WriteLine("十进制166的十六进制表示: "+Convert.

mysql 10进制与35进制之间的转换 注意Power处理bigint的问题

35进制的目的是防止0和O造成的视觉误差 BEGIN    DECLARE m_StrHex35 VARCHAR(100); -- 返回35进制表示的结果  DECLARE m_Remainder BIGINT; -- 余数  DECLARE m_Base35 VARCHAR(1); SET m_Remainder=0;  SET m_StrHex35='';   WHILE p_Hex10>=35 DO        SET m_Remainder=p_Hex10%35;        SET

java 各进制之间的转换

十进制转换为十六,八,二进制不用写算法直接用 String hexString = Integer.toHexString(int decNum); String octalString = Integer.toOcalString(int decNum); String binaryString = Integer.toBinaryString(int decNum); n进制的nStr转换为十进制,可以用这个函数 String decStr = Integer.parseInt(String