例如,以下语句如何相等?
a( 0116=0x4E
b( 97=00141=0x0061
c( 45=0x2d=0055
我试着查了一下,但对我来说还是没有意义。谢谢。
如果它以0x
或0X
开头,则它是一个十六进制数,即基数16
。
否则,如果它只以0
开头,它就是一个八进制数,即基数8
。
否则它是一个十进制数,即以10为基数。
(以下是非标准的-gcc扩展(
如果它以0b
开头,则它是一个二进制数,即基数2
。
以0开头的数字是八进制数以0x开头的数字是十六进制
我们需要区分两种不同的数字系统,在编程时我们这样做
如果你想验证这些等式,你可以自己解决,也可以使用在线转换器。我在下面给你链接
http://calc.50x.eu/
以0
开头的数字是八进制的。介于0和7之间的八进制数字。以八进制计数:0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, ...
以0x
或0X
开头的数字是十六进制(十六进制(。十六进制使用数字和字母值。十六进制计数:0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, ...
那么01168==0x4E16是怎么回事呢?
C编译器将在0116
中看到0
,并知道将数字中断为八进制。编译器可以相互检查不同的数字系统,因为我们大多数人需要将它们转换为我们可以更好地理解的东西。
将八进制转换为十进制可以作为函数的∑(对于i=0到n(来完成:aix8i>。在您的示例中:
1x82=64
1x81=8
6x80=6
64+8+6=7810
将十六进制转换为十进制可以使用几乎相同的公式来完成,但您需要将每个字母转换为等价于aix16i>的十进制部分。
4x161=64
14x160=14//E16==1410
64+14=7810
显然,78==78,compilter不需要先进行转换就可以看到这一点。