이 함수의 작동 방식을 설명 할 수 있습니까?비트 연산자 파일 함수 PHP
$size=100 //kb
if (filesize(file) > ($size << 10))
echo "file too big";
$size << 10
은 어떻게 작동합니까? KB 대신 MB를 사용하려면 어떻게합니까?
이 함수의 작동 방식을 설명 할 수 있습니까?비트 연산자 파일 함수 PHP
$size=100 //kb
if (filesize(file) > ($size << 10))
echo "file too big";
$size << 10
은 어떻게 작동합니까? KB 대신 MB를 사용하려면 어떻게합니까?
표현식 $size << 10
은 비트 패턴을 왼쪽으로 10 번 이동시켜 1024를 효과적으로 곱합니다. 즉, $size * 1024
입니다.
왼쪽 시프트를 수행 할 때마다 값에 2를 곱합니다. bitwise operators도 참조하십시오. 당신이 MB의 크기를 의미하는 $size
를 원한다면, 다른 1,024을 곱
, 즉
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
의 10 분의 1은 킬로 바이트의 바이트 수인 1024
입니다. 메가 바이트 단위의 바이트 수는 pow(2, 20)
입니다. $size << 20
으로 작성할 수 있습니다.
파일 크기 함수는 파일 크기를 바이트으로 반환합니다. $size
값은 KB으로 정의됩니다. ($size << 10)
은 비교가 올바른지 확인하기 위해 KB에서 바이트로 변환합니다.
그것은 왼쪽 시프트 연산자입니다.
100 << 10
는 그것은 무엇 filesize()
반환되는, 그것은 바이트 1백킬로바이트 변환있어 1024
곱과 동일합니다 당신 102400
에게주는 그 (10)에 의해 왼쪽으로 100 이동을 의미합니다.
숫자는 내부적으로 2 진수, 0과 1로 표시됩니다. <<
운영자는 예를 들어, 그것은 제로를 추가 오른쪽에, 장소의 지정된 양만큼 왼쪽으로 모든 이진 숫자를 이동합니다 :
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