문제

3 개의 32 비트 unsigned ints로 끝나는 3 개의 비트 마스크를 만들어야합니다 (x, y 및 z를 호출합니다).마스크는 다음과 같이 끝나야합니다.

x: 0000 0001 1111 1111 1111 1111 1111 1111
y: 0000 1110 0000 0000 0000 0000 0000 0000
z: 1111 0000 0000 0000 0000 0000 0000 0000
.

지금까지

unsigned int x = (1<<25)-1;
unsigned int y = (~x)&((1<<28)-1);
unsigned int z = (~x)<<3;
.

그러나 조금 지저분 해 보입니다.누구든지 더 간결한 (그리고 읽을 수있는) 방식으로 생각해 낼 수 있습니까?

도움이 되었습니까?

해결책

C99를 사용하는 경우 "새로운"고정 너비 유형을 사용하세요. 라코 디스

또는 "추악한"8 진수를 사용할 수 있습니다 :-) 라코 디스

다른 팁

라코 디스

읽을 수 있습니까?

단순히 unsigned int를 입력 한 번호를 입력하십시오 (16 진수 표기법을 사용하는 경우) :

unsigned int mask= 8 ; // 00000000 00000000 00000000 00001000
unsigned int mask = 0x08 ;
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top