【发布时间】:2013-12-04 20:21:09
【问题描述】:
不应该是 0x00000100 = 4。
我知道从 2^0 开始 0x00000001 = 1,从 2^1 开始 0x00000010 = 2。我的想法有什么问题?
initVariable(&variable1, "variable1", "1, 2, 3", 0x00000100);
assertIntegerEquals(variable1.address, 4); // 0x00000100 = 4?
我的断言失败了,因为它说 256 != 4
【问题讨论】:
-
0x是通常用于十六进制 (base-16) 数字的前缀,而不是二进制 (base-2)。此外,0x00000010 是 16,因为 16^1。 -
不应该是 0000 0100 = 8 和 0000 0010 = 4
-
@jonnh,00000100 是 8。但是 OP 说的是十六进制:0x00000010 是 16,而不是 2。
-
8,我的意思是 4. 0001 = 1, 0010 = 2, 0100 = 4, 1000 = 8. :)
-
@alk,是的,用于八进制解释。我的观点是:OP 问题中的数字显示为十六进制,但他解释为二进制。