Loading... > 部分转载于 http://c.biancheng.net/view/1725.html ---------- ### 2、8、10、16进制: **2进制**: 0 1 **8进制**:0 1 2 3 4 5 6 7 **10进制**:0 1 2 3 4 5 6 7 8 9 **16进制**: 0 1 2 3 4 5 6 7 8 9 A B C D E F # 进制的转换 ## 1. 2\8\16 转 10进制: 假设当前数字是 N 进制,那么: - 对于整数部分,从右往左看,第 i 位的位权等于$$N^{i-1}$$ - 对于小数部分,恰好相反,要从左往右看,第 j 位的位权为$$N^{-j}$$。 **8进10** $$ \begin{align} &423.5176 = \\ &4×8^2 + 2×8^1 + 3×8^0 \quad after \quad point+ 5×8^{-1} + 1×8^{-2} + 7×8^{-3} + 6×8^{-4} = 275.65576171875(十进制) \end{align} $$ **16进10** $$ \begin{align} &9FA8C = \\ &9×16^4 + 15×1^63 + 10×16^2 + 8×16^1 + 12×16^0 = 653964(十进制) \end{align} $$ **2进10** $$ \begin{align} &1010.1101 = \\ &1×2^3 + 0×2^2 + 1×2^1 + 0×2^0 \quad after\quad point \quad+ 1×2^{-1} + 1×2^{-2} + 0×2^{-3} + 1×2^{-4} = 10.8125(十进制) \end{align} $$ ## 2. 10进制 转 2\8\16进制: ### 十进制整数转换为 N 进制整数采用“<u>除 N 取余,逆序排列</u>”法 ###1. 10进8,所以除8求余,逆序排列,十进制36926得八进制<u>110076</u> ![10进8][1] ###2. 10进2,所以除2求余,得十进制42得二进制<u>101010</u> ![10进2][2] ###3. 10进8的小数,给小数成8出整数,而这个**整数就是进制后的小数**,算出来的数**正向**排列, 所以十进制0.930908203125得八进制<u>0.7345</u> ![10-8小数][3] ###4. 10进的小数,同理,若小数点前后都有数字,那就把两种方法叠加。得十进制0.6875得二进制<u>0.1011</u> ![10decimal2][4] 所以**十进制 <u>42.6875</u>** 转 **二进制为 <u>101010.1011</u>** **十进制 <u>36926.930908203125</u>** 转 **八进制 为<u>110076.7345</u>** ###5. 特别的是,有时候一些小数是没有办法全部变为整数的,这个时候,我们一般会保留到某位小数,只要精度够,省略非常小的数也是可以的。 - 十进制 0.51 对应的二进制为 0.100000101000111101011100001010001111010111...,是一个循环小数; - 十进制 0.72 对应的二进制为 0.1011100001010001111010111000010100011110...,是一个循环小数; ## 3. 8/16进制 和 2进制之间的转换 ###对于2/8/16之间的转换,主要是划分区段,然后一一对应的补出数字即可 | 二进制 | 八进制 | 十六进制 | | :---------------: | :--------: | :------: | | 000(8) / 0000(16) | 0 | 0 | | 001(8) / 0001(16) | 1 | 1 | | 010(8) / 0010(16) | 2 | 2 | | 011(8) / 0011(16) | 3 | 3 | | 100(8) / 0100(16) | 4 | 4 | | 101(8) / 0101(16) | 5 | 5 | | 110(8) / 0110(16) | 6 | 6 | | 111(8) / 0111(16) | 7 | 7 | | 1000 | 10(逢8进1) | 8 | | 1001 | 11 | 9 | | 1010 | 12 | A | | 1011 | 13 | B | | 1100 | 14 | C | | 1101 | 15 | D | | 1110 | 16 | E | | 1111 | 17 | F | 不难发现,对于一个四位二进制1111 各位的1代表16的1, 十位的1代表16的2, 百位的1代表16的4, 千位的1代表16的8, 于是只要做加法就可以了! #### 对照上表,我们便可以开始转化了 ### 8进2 ![8进2][5] 2473 -> 010111100011 ### 2进8 ![2进8][6] 001110111100 -> 1674 ### 16进2 ![16进2][7] A5D6 -> 1010010111010110 ### 2进16 ![2进16][8] 0010110101011100 -> 2D5C > 总结一下,2/8/16到10的相互转换 > 2 / 8 / 6 之间的相互转化 > 你学废了吗 [1]:https://image.oplin.cn/photo/oplin.cn/conversion_system/10jin8.png [2]:https://image.oplin.cn/photo/oplin.cn/conversion_system/10jin2.png [3]:https://image.oplin.cn/photo/oplin.cn/conversion_system/10decimal8.png [4]:https://image.oplin.cn/photo/oplin.cn/conversion_system/10decimals2.png [5]:https://image.oplin.cn/photo/oplin.cn/conversion_system/8jin2.png [6]:https://image.oplin.cn/photo/oplin.cn/conversion_system/2jin8.png [7]:https://image.oplin.cn/photo/oplin.cn/conversion_system/16jin2.png [8]:https://image.oplin.cn/photo/oplin.cn/conversion_system/2jin16.png 最后修改:2022 年 10 月 09 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 1 如果觉得我的文章对你有用,请随意赞赏
7 条评论
哈哈哈,写的太好了https://www.cscnn.com/
哈哈哈,写的太好了https://www.cscnn.com/
想想你的文章写的特别好www.jiwenlaw.com
想想你的文章写的特别好www.jiwenlaw.com
不错不错,我喜欢看 https://www.237fa.com/
叼茂SEO.bfbikes.com
博主真是太厉害了!!!