어떻게 하면 낮은 8비트의 int를 얻을 수 있습니까?
제가 n = 8의 int 변수를 가지고 있다고 가정해 보겠습니다. 대부분의 시스템에서 이 값은 32비트 값이 됩니다.이것의 하위 8비트(최저 바이트)만 이진법으로 얻을 수 있는 방법은 무엇입니까?또한 각 비트에 액세스하여 해당 비트가 무엇인지 알 수 있는 방법이 있습니까?
unsigned n = 8;
unsigned low8bits = n & 0xFF;
몇 가지 사항을 참고합니다.
- 비트 와이즈 연산의 경우 항상
unsigned
종류들 - 비트는 이진 마스킹을 사용하여 숫자에서 추출할 수 있습니다.
&
교환입니다. - 로우 8비트에 액세스하려면 마스크가
0xFF
왜냐하면 이진법에서는 낮은 8비트가 켜지고 나머지 0비트가 켜지기 때문입니다. - 숫자 8의 하위 8비트는...8 (잠시 생각해 보세요)
숫자의 특정 부분에 접근하려면 다음과 같이 말합니다.k
th 비트:
unsigned n = ...;
unsigned kthbit = (1 << k) & n;
지금이다,kthbit
만약에 0 이라면 0이 될 것입니다.k
한 뼘n
0이고, 약간의 양수(2**k
) 만약에k
한 뼘n
1 입니다.
비트 와이즈 산술을 사용하여 가장 낮은 8비트를 마스킹합니다.
unsigned char c = (x & 0xFF);
n번째로 낮은 비트에 접근하려면, 방정식은(x & (1 << n))
(0의 n은 최하위 비트를 나타냅니다.)0의 결과는 비트가 선명함을 나타내고 0이 아닌 경우는 비트가 설정되었음을 나타냅니다.
가장 좋은 방법은 비트 논리 연산자와 적절한 값을 사용하는 것입니다.
따라서 하위 8비트의 경우:
n & 0xFF; /* 0xFF == all the lower 8 bits set */
또는 일반적으로:
n & ((1<<8)-1) /* generate 0x100 then subtract 1, thus 0xFF */
비트 시프트 연산자와 결합하여 특정 비트를 얻을 수 있습니다.
(n & (1<<3))>>3;
/* will give the value of the 3rd bit - note the >>3 is just to make the value either 0, or 1, not 0 or non-0 */
특정 비트가 숫자로 설정되어 있는지 테스트할 수 있습니다. << 및 &, 즉:
if (num & (1<<3)) ...
네 번째 비트가 설정되어 있는지 여부를 테스트합니다.
마찬가지로 가장 낮은 8비트만 설정된 숫자를 사용하여 (정수로서) 가장 낮은 8비트만을 추출할 수 있습니다.num & 255
아니면num & 0xFF
(16진수로 표시)
언급URL : https://stackoverflow.com/questions/3270307/how-do-i-get-the-lower-8-bits-of-an-int
'sourcetip' 카테고리의 다른 글
IIS7: 프로세스 서비스 응용 프로그램 풀 'YYYYY'에서 Windows 프로세스 활성화 서비스와 치명적인 통신 오류가 발생했습니다. (0) | 2023.09.20 |
---|---|
Wordpress에서 제거 후 플러그인 데이터 삭제 (0) | 2023.09.20 |
MariaDB 데이터베이스 테이블에 공간 구분 텍스트 파일 로드 (0) | 2023.09.20 |
Angular 지시사항이 있는지 확인합니다. (0) | 2023.09.20 |
Oracle 데이터베이스.동일한 테이블에 행의 복사본 삽입(키 중복 오류 메시지) (0) | 2023.09.20 |