为什么(int)08等于0,而不是8?

时间:2018-01-23 07:11:59

标签: php

echo (int)01; //1

echo (int)02; //2

echo (int)03; //3

echo (int)04; //4

echo (int)05; //5

echo (int)06; //6

echo (int)07; //7

echo (int)08; //0

echo (int)09; //0

echo (int)010; //8

echo (int)011; //9

echo (int)012; //10

echo (int)013; //11

(int)从01到07做得很好。但之后就出错了。它的原因是什么?

2 个答案:

答案 0 :(得分:1)

如果数字从0开始,则考虑octal number

因为这些数字的范围仅为0到7。你得到一个0,因为8%8 = 0

参考:http://php.net/manual/en/language.types.integer.php

关于号码系统的附注

你有没有想过为什么9号的下一个数字是10?为什么在二进制系统中序列是0,1,10,11 ......?为什么八进制系统只允许从0到7的值?

这是因为数字系统通常会根据基础上的模数逻辑增加值。

例如,使用二进制数系统。因为它是base 2,所以它只能包含值0,1,因为0%2 = 0,1%2 = 1,但2%2再次为0

所以每当有更多的数字出现时,就说3.它的二进制值是(在前面的地方加1)(把模数放在现有的地方)

因此二进制系统中3的值为(0+1) (3%2) = 11

虽然这不是确切的逻辑,但只是把它放在这里作为初学者参考

答案 1 :(得分:1)

预计08可能是八进制数,就像0x是十六进制数。