有人能解释我这个函数的工作原理吗?按位运算符文件函数php
$size=100 //kb
if (filesize(file) > ($size << 10))
echo "file too big";
$size << 10
如何工作?我怎样才能让它使用MB而不是KB?
有人能解释我这个函数的工作原理吗?按位运算符文件函数php
$size=100 //kb
if (filesize(file) > ($size << 10))
echo "file too big";
$size << 10
如何工作?我怎样才能让它使用MB而不是KB?
表达式$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";
}
$size << 10
表示$size * pow(2, 10)
。 2
的第十个次幂是1024
,这是千字节中的字节数。兆字节中的字节数是pow(2, 20)
;你可以把它写成$size << 20
。
文件大小函数返回字节中文件的大小。 $size
值定义为KB。 ($size << 10)
从KB转换为字节,以便比较正确。
这是一个左移运算。
100 << 10
装置转换100至10。向左这使你102400
这是相同的,通过1024
乘以它转换到100KB字节,这是什么filesize()
回报。
数字在内部表示为二进制,一系列的零和一。该<<
运营商将转移全部由指定的地方量留下的二进制数字,在右边把它追加零,例如:
7 << 2
= 111 << 2 (7 = 111 in base two)
= 11100
= 28 (11100 = 28 in base ten)
你需要知道1024 = 2
10
,因此有下一个10
数字二进制表示,因此向左移动10位数字导致该数字乘以1024
。
左移并划分,什么? – TimWolla
左移倍增。 filesize返回字节数... – sachleen
@Jack我建议您仔细阅读文档。 “将$ a $ b步骤的位移到左边(每步意味着”乘以2“)” – sachleen