按位运算符文件函数php

时间:2014-02-17 01:21:55

标签: php image bitwise-operators

有人能解释一下这个功能是如何运作的吗?

    $size=100 //kb
    if (filesize(file) > ($size << 10))
     echo "file too big";

$size << 10如何运作?如何让它使用MB而不是KB?

5 个答案:

答案 0 :(得分:5)

表达式$size << 10将位模式向左移动10次,实际上乘以1024;换句话说,它是$size * 1024

每次执行左移时,都会将该值乘以系数2。另请参阅bitwise operators

如果您希望$size表示以MB为单位的大小,则再乘以1024,即

if ($filesize($file) > $size * 1024 * 1024) {
    echo "file too big";
}

或者:

if ($filesize($file) > $size << 20) {
    echo "file too big";
}

答案 1 :(得分:2)

数字在内部表示为二进制,一系列零和一。 <<运算符将移动指定数量的位置所剩下的所有二进制数字,在右侧它会附加零,例如:

  7 << 2
= 111 << 2 (7 = 111 in base two)
= 11100
= 28 (11100 = 28 in base ten)

接下来您需要知道1024 = 2 10 因此具有10位二进制表示,因此向左移10位数会产生数字乘以1024

答案 2 :(得分:1)

$size << 10表示$size * pow(2, 10)2的第十个幂是1024,它是以千字节为单位的字节数。兆字节中的字节数为pow(2, 20);你可以把它写成$size << 20

答案 3 :(得分:0)

filesize函数以 bytes 返回文件的大小。 $size值定义为 KB ($size << 10)从KB转换为字节,以便比较正确。

答案 4 :(得分:0)

这是一个左移操作员。

100 << 10表示将100向左移动10.这会给你102400

与乘以1024相同。

它将100kb转换为字节,这是filesize()返回的内容。