二进制、八进制、十进制、十六进制之间的相互转换 | 您所在的位置:网站首页 › 二进制转八进制计算 › 二进制、八进制、十进制、十六进制之间的相互转换 |
二进制、八进制、十进制、十六进制的定义就不再赘述了 二进制 逢二进一; 八进制 逢八进一 ;十进制 逢十进一;十六进制 逢十六进一; 首先是我们生活中常用的十进制转换其他进制: 我们用除积倒取余 法,就是说比如我们要转二进制 就用 十进制除以2 取余,一直到0,然后倒取余就可以得到二进制,八进制就是把2换成8 ,以此类推。下面我们用例子说明 1 十进制转二进制: 例 : 89 89 / 2 = 44 -------1 44 / 2 = 22 -------0 22 / 2 = 11 -------0 11 / 2 = 5 ---------1 5 / 2 = 2 -----------1 2 / 2 = 1 -----------0 1 / 2 = 0 -----------1 二进制:1011001 (倒着取余) 可以再代码中输出验证一下:System.out.println(0b1011001);(在 java1.7以上的版本 0b 表示二进制) 这里就不截图,可以自己测试一下 再举例 :103 103 / 2 = 51 ----- 1 51 / 2 = 25 ---------1 25 /2 = 12 -----------1 12 / 2 = 6 ------------0 6 / 2 = 3 --------------0 3 / 2 = 1 --------------1 1 / 2 = 0 ---------------1 二进制:1100111 System.out.println(0b1100111 ); 结果为 103; 2.十进制转八进制 同样用除积倒取余,我们就还用 89为例吧; 89 / 8 = 11 -----1 11 / 8 = 1 -------3 1 / 8 = 0 ---------1 八进制: 131 System.out.println(0131); 结果为 89; 109为例 109 / 8 = 13 ----- 5 13 / 8 = 1 ---------5 1 / 8 = 0 ---------1 八进制: 155 System.out.println(0155); 结果为 109 转为十六进制同样用此方法,只要把 2 或者8 换成16就可以了,这里就不再举例说明了。 下面我们说一下 8421码的方法 我们写一下 二进制 11111111 我们来分开 : 1 1 1 1 1 1 1 1 从第一位来说: 2的7次方 = 128 第二位 2 的 6次方 = 64 第三位 2 的5次方 = 32 第四位 2 的 四次方 = 16 以此类推后面四位分别为 8 ----- 4 ------ 2 ----- 1 我们把值放到对应的二进制 1 1 1 1 1 1 1 1 128 64 32 16 8 4 2 1 这就是8421,可以把这看成一个表, 我们来举个例子 二进制 :1100111(上例中十进制103的二进制) 转成十进制 1 1 1 1 1 1 1 1 128 64 32 16 8 4 2 1 1 1 0 0 1 1 1 从这个表中我们可以得出 : 64*1 + 32 * 1 + 16 * 0 + 8*0 + 4*1 + 2*1 + 1*1 = 64 + 32 + 0 + 0 + 4 + 2 + 1 = 103 现在我们举例说明 十进制通过8421转二进制 还以 103为例: 1 1 1 1 1 1 1 1 128 64 32 16 8 4 2 1 首先 103 < 128 所以第一位 = 0 103 > 64 所以第二位 = 1 (103 - 64)= 39 > 32 所以第三位 = 1 39 - 32 = 7 < 16 所以第四位 = 0 7 < 8 所以第五位 = 0 7 > 4 所以第六位 = 1 7-4 = 3 > 2 所以第七位 = 1 3-2 = 1 = 1 所以第八位 = 1 二进制: 01100111 可以在代码中输出验证一下; 接下来二进制通过8421码转八进制 二进制转八进制 是三位一组 从后往前 1 1 1 1 1 1 1 1 128 64 32 16 8 4 2 1 还是用 103的二进制举例: 01 100 111 三位一组 拿第一组 111 对照8421码 1 1 1 分别对应的是 4 + 2 + 1 = 7 1 0 0 分别对应的是 4 + 2*0 + 1 * 0 = 4 0 1 分别对应的是 2*0 + 1*1 = 1 八进制结果: 147 可以在代码中输出验证一下; 103的二进制转 十六进制 二进制转十六进制是 四位一组 0110 0111 分成两组 0 1 1 0 分别对应 8*0 + 4*1 + 2*1 + 1*0 = 6 0 1 1 1 分别对应 8*0 + 4*1 + 2*1 + 1*1 = 7 十六进制 :0X67 至于十六进制转二进制 可以用除积倒取余方法 用 0X67 举例 67 拆分 6 和 7 ; 首先 7 / 2 = 3 ------1 3 / 2 = 1 --------1 1 / 2 = 0 ----------1 0 / 2 = 0 ---------- 0 得到的四位 就为 0 1 1 1 再说 6 6 / 2 = 3 ---- 0 3 / 2 = 1 ------- 1 1 / 2 = 0 -------- 1 0 / 2 = 0 ------- 0 补一位0 得到的四位 就是 0110 组合起来的二进制就是 : 01100111 = 103(十进制) 八进制(147) 转二进制 一位变三位 拆分为 1 和 4 和 7 先从7开始 7 / 2 = 3 ------ 1 3 / 2 = 1 ---------1 1 / 2 = 0 ----------1 然后是4 4 / 2 = 2 ----- 0 2 / 2 = 1 -------0 1 / 2 = 0 --------1 最后是 1 1 / 2 = 0 ----- 1 0 / 2 = 0 ------- 0 组合起来的二进制就是 01 100 111 有些乱。刚开始写,只要理解了除积倒取余和8421码,各进制之间的转换,你会发现,其实没那么难。 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |