我收到了一位开发人员的电子邮件,他说:
您可能知道1110000000000000表示1 + 2 + 4
我将无法与他联系几天。任何人都可以解释这是可能的吗?
使用以下函数将数字转换为二进制:
function toBinaryString(bitmask)
tvar2 = 0
tvar3 = 1
tvar1 = ""
do while tvar2 < 16
if (bitmask and tvar3) > 0 then
tvar1 = tvar1 & "1"
else
tvar1 = tvar1 & "0"
end if
tvar3 = tvar3 * 2
tvar2 = tvar2 + 1
loop
toBinaryString = tvar1
end function
答案 0 :(得分:3)
这是小端符号(Wiki)。基本上,最不重要的位出现在左侧,不像大端符号(这是大多数人在谈论二进制时所想到的)。
因此第一位代表0 ^ 2,然后是1 ^ 2,2 ^ 2等(所以1 + 2 + 4)。
答案 1 :(得分:2)
准备一些有趣的阅读材料:How bytes work
实际上您的开发人员不正确,二进制表示法中的1110000000000000是十进制表示法中的57344。