32비트열 질문 2번 입니다.
얀
2023.04.01
질문 내용 :
uint dec=1234;
.
.
.
uint dec2bit(uint dec) {
uint bit = 0;
int digit;
while(dec) {
//bit |= (0x01 (dec % 10));
digit = dec % 10; // 십진수에 10을 나눈 나머지
bit |= 0x01 digit; // 자리 번호
dec /= 10; // 10으로 나눈 몫
}
return bit;
}
다른건 다 이해가 되는데...
bit |= 0x01 digit; // 자리 번호
이게 잘 이해가 안되거든요...
0x01이 32비트열 맨 오른쪽 즉 000000000...1 이죠 ???
그리고 이걸 비트 단위로 옮기는데 ....
1234%10 이면 맨 처음은 4가 되잖아요 ???
bit |= 0x01 4; 가 된단 말인데 ... 이 while 문 다돌려서
어떻게 1111000000... 이가 되는지...
bit |= 0x01 digit; // 자리 번호
에 대해 자세한 설명좀 부탁드립니다.
-
나래
실제 수치는 000000...1111 로 되지요.
그런데 출력을 오른쪽에서 왼쪽으로 하기 때문에(예전에 한번 언급한 듯)
11110000000... 이렇게 출력이 되는 것이지요.