有人能解釋我這個函數的工作原理嗎?按位運算符文件函數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