programing

이 ">>=" 연산자는 C에서 무엇을 의미합니까?

megabox 2023. 7. 3. 22:38
반응형

이 ">>=" 연산자는 C에서 무엇을 의미합니까?

unsigned long set;
/*set is after modified*/
set >>= 1;

커널 시스템 호출에서 이걸 찾았는데 이해가 안 되는데, 어떻게 작동하나요?

그 표현은set >>= 1;수단set = set >> 1;그것은 오른쪽 시프트 비트입니다.set타고1(자체 할당 형식:>>Bitwise 오른쪽 Shift 연산자를 선택합니다.

만약에set다음과 같습니다.

BIT NUMBER    31   n=27        m=17                 0
              ▼    ▼           ▼                    ▼
set =         0000 1111 1111 1110 0000 0000 0000 0000

그다음에set >> = 1;변수set다음이 됩니다.

BIT NUMBER    31   n=26        m=16                 0
              ▼     ▼           ▼                   ▼
set =         0000 0111 1111 1111 0000 0000 0000 0000

비트 수가 이동했습니다.

흥미로운 점에 유의하십시오.왜냐면set이라unsigned long그래서 이것은>>연산은 논리적 시프트(부호 시프트)여야 합니다. 논리적 시프트는 숫자의 부호 비트를 보존하지 않습니다.

또한 모든 비트를 오른쪽으로 이동하기 때문에(중요한 숫자보다 작은 경우도 있음) 오른쪽 이동 하나는 = 숫자를 2로 나눕니다.

코드를 확인합니다(마지막 포인트를 보여주기 위해).

int main(){
 unsigned long set = 268304384UL;
 set >>= 1;
 printf(" set :%lu \n", set);
 set = 268304384UL;
 set /= 2;
 printf(" set :%lu \n", set);
 return 1; 
}

출력:

 set :134152192 
 set :134152192

(참고: 그것은 의미하지 않습니다.>>그리고./둘 다 동일)

마찬가지로 연산자가 있습니다.<<=왼쪽 시프트의 경우 다른 사용 가능한 비트와이즈 연산자와 복합 할당 연산자를 확인하고, 섹션: 비트 표현식 및 부호 없는 시프트와 부호 없는 시프트 간의 차이도 확인합니다.

이 "우측 이동"은 값을 1비트씩 바꿉니다.정수의 모든 비트를 1씩 오른쪽으로 이동하면 이진법이 기본 2 번호 체계이기 때문에 효과적으로 "2로 나눕니다".

이진법으로 숫자 12를 사용한다고 가정해 보십시오.

1100 = 12 in binary
 110 =  6 in binary (1100 right-shifted)

10자리 숫자의 모든 자리를 하나씩 오른쪽으로 이동하는 것과 마찬가지로 10으로 나눕니다.

모든 이항 연산자는 다음과 결합할 수 있습니다.=모든 경우

dest op= expression

와 동등합니다.

dest = dest op expression

(경우 제외)dest부작용이 있습니다. 단 한 번 발생합니다.)

그래서 이것은 의미합니다.

set>>=1;

다음과 같습니다.

set = set >> 1;

부터>>이항 오른쪽 이동 연산자이며, 값을 이동하는 것을 의미합니다.set딱 1비트 차이로.

이것은 비트를 1씩 오른쪽으로 이동시키며, 이는 2로 나눗셈하는 것과 같습니다.비트 이동에 대한 자세한 내용은 http://msdn.microsoft.com/en-us/library/f96c63ed(v=vs.80).aspx 을 참조하십시오.

위의 명령은 오른쪽 시프트를 1비트씩 수행합니다. 링크 http://www.cprogramming.com/tutorial/bitwise_operators.html 에서 c의 비트 연산을 참조하십시오.

언급URL : https://stackoverflow.com/questions/17769948/what-does-this-operator-mean-in-c

반응형