PHP 프로그래밍에서, 이진 데이터를 처리 할 때, 이진 비트가 1인지 여부를 결정해야한다. PHP는 각각 이진 에서 10 진수에서 바이너리에서 바이너리에서 이진에 사용되는 두 가지 매우 실용적인 기능을 제공한다. 이 기사는이 두 기능을 결합하여 특정 바이너리가 1인지 여부를 결정하는 방법을 소개합니다.
bindec (String $ binary_string) : int
이진 문자열을 해당 10 진수 정수로 변환합니다.
decbin (int $ decimal) : 문자열
소수 정수를 해당 바이너리 스트링으로 변환합니다.
예를 들어:
echo bindec("101"); // 산출 5
echo decbin(5); // 산출 "101"
소수점이 있고 이진 표현에서 $ POS 비트 (오른쪽에서 왼쪽으로 카운트, 0에서 계산)가 1인지 여부를 알려주고 싶다고 가정 해 봅시다. 구현 아이디어는 다음과 같습니다.
숫자를 이진 문자열로 변환합니다.
문자열 길이에 따라 대상 비트의 인덱스를 계산합니다.
비트 문자가 '1' 인지 확인하십시오.
<?php
function isBitSet($decimalNumber, $pos) {
// 10 진수를 바이너리 스트링으로 변환하십시오
$binaryString = decbin($decimalNumber);
// 문자열 에서이 비트의 인덱스를 계산하십시오,바이너리 스트링은 왼쪽에서 오른쪽으로 높아져서 낮습니다.
$index = strlen($binaryString) - 1 - $pos;
// 인덱스가 더 적은 경우0,이 비트가 범위를 벗어 났음을 나타냅니다,기본적으로 반환false
if ($index < 0) {
return false;
}
// 해당 비트가 있는지 확인하십시오 '1'
return $binaryString[$index] === '1';
}
// 시험
$number = 13; // 이진은입니다1101
$position = 2; // 오른쪽에서2조금,0기본 색인,이진에서는입니다1
if (isBitSet($number, $position)) {
echo "1. {$position} 조금是1";
} else {
echo "1. {$position} 조금不是1";
}
?>
산출:
1. 2 조금是1
숫자 수는 오른쪽에서 왼쪽으로 계산되고 가장 낮은 자리는 0입니다.
decbin ()을 사용하여 십진수를 바이너리 스트링으로 변환 할 때, 문자열의 길이는 예상 비트 수보다 작을 수 있으며 길이를 초과하는 비트는 기본적으로 0으로 간주됩니다.
여러 비트를 판단하려면 루프 또는 비트 작업을 결합 할 수 있습니다.
decbin () 및 String Index를 사용하면 기능을 달성 할 수 있지만 비트 작동 효율이 높고 쓰기 방법이 더 간단합니다.
function isBitSetBitwise($number, $pos) {
return (($number >> $pos) & 1) === 1;
}
위의 기능을 사용하여 특정 비트가 1인지 확인할 수도 있습니다.
이 기사는 PHP의 Bindec () 및 Decbin () 기능을 사용하여 특정 바이너리가 1인지 여부를 결정하는 방법을 소개합니다. 간단한 학습 및 이진 비트 처리 이해에 매우 도움이되지만 실제 프로젝트에서는 비트 작업을 사용하여 성능 및 코드 가독성을 향상시키는 것이 좋습니다.