例如,以下陈述如何相互相等?
a)0116 = 0x4E
b)97 = 00141 = 0x0061
c)45 = 0x2d = 0055
我曾尝试查找它,但它对我来说仍然没有意义。感谢。
答案 0 :(得分:5)
如果它以0x
或0X
开头,则为十六进制数,即。基地16
。
否则,如果它仅以0
开头,则为八进制数,即。基地8
。
否则它是十进制数,即。基地10。
(以下是非标准 - gcc扩展名)
如果以0b
开头,则为二进制数,即。基地2
。
答案 1 :(得分:0)
以0开头的数字是八进制数 以0x开头的数字是十六进制
我们需要区分两个不同的数字系统,在编程中我们这样做
如果你想验证这些平等,你可以自己解决它,或者你可以使用在线转换器。我给你链接下面的链接
答案 2 :(得分:0)
以0
开头的数字是八进制的。八位数在0到7之间。以八进制计数:
0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 17, 20, ...
以0x
或0X
开头的数字是十六进制(十六进制)。十六进制使用数字和alpha值。十六进制计数:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, ...
那么0116 8 == 0x4E 16 怎么样?
C编译器将在0
中看到0116
并知道将数字中断为八进制。编译器可以检查彼此不同的数字系统,因为我们(主要是人类)需要将它们转换为我们能够更好理解的东西。
将八进制转换为十进制可以作为函数的Σ(对于i = 0到n)来完成:a i x8 i 。在你的例子中:
1x8 2 = 64
1x8 1 = 8
6x8 0 = 6
64 + 8 + 6 = 78 10
将Hex转换为Decimal可以使用几乎相同的公式完成,但是您需要将每个字母转换为a i 部分的十进制等效值:a i x16 我。
4x16 1 = 64
14x16 0 = 14 // E 16 == 14 10
64 + 14 = 78 10
显然78 == 78,编译器只是不需要先进行转换才能看到。