十六进制与八进制对应二进制的规律

版权声明:qq:1263351411 https://blog.csdn.net/u013008795/article/details/89576276

十六进制与八进制对应二进制的规律。

  • 问题:
        在学编程语言时,基本每一种编程语言都会提供hex()转换为16进制的函数,和oct()转换为8进制的函数。学过C#,java,Python,几乎每一种语言都约定束城的将10进制作为默认进制,而对8进制和16进制做了单独的函数封装。如果需要转成其他进制会有一个公用的函数提供。每次都很好奇为啥要单独提供。今天终于明白了。
  • 计算机是二进制的。
  • 二进制特点:【8,4,2,1】原理(每个在自己位上单独二进制数对应的十进制数)。4位的二进制数满位转换成十进制为:8+4+2+1=15
  • 十进制:作为默认使用进制,适应社会。设计合理
  • 十六进制:比如说0xFF 表示为二进制为:0b11111111。
    • 注意:一位的最大十六进制数为F,等价于十进制的15,等价于二进制数的0b1111刚好是由4位二进制数的最大值组成。
    • 规律:十六进制转二进制,只需要将十六进制每位的数转成对应的二进制数链接起来就是对应的二进制数:例如:0xFF 等价于0b11111111。刚好是一个满8位的二进制数。同理,如果二进制数转成十六进制,只需要将二进制从最小位开始每4位转成一个对应的十六进制数链接起来就是对应的十六进制,例如:0b10110011 等价于0xb3。
    • ipv6地址就是十六进制表示
  • 八进制:根据上面16进制类似,是由3位满位的二进制数刚好等于一位满位的八进制数。例如:0o7 等价于0b111。
    • linux权限就是8进制表示。

总结

  • 一位的十六进制满位,刚好等价于4位的二进制满位
  • 一位的八进制满位,刚好等价于3位的二进制满位
  • 一位的4进制满位,刚好等价于2位的二进制满位

应用

    上面我们可以发现,用16进制转二进制,加上【8,4,2,1】原理,几乎口算都能算出任何一个十六进制的数对应的二进制数。更加方便理解二进制。而刚好计算机每个字节是8位的二进制数,所有一个字节只需要用一个2位的二进制数去表示。这样也有利于对字节的理解。 在IPV4地址中,也是使用的16进制数表示。可以说16进制非常友好的支持了我们对二进制数的理解。所有使用也比较频繁。这样一般编程语言就单独为16进制的数转换提供了单独的函数。至于8进制为啥要单独提供。目前还没有更好的理解。

猜你喜欢

转载自blog.csdn.net/u013008795/article/details/89576276