for (int i = 7; i >= 0;i--) {
cout << ((c >> i) & 1);
이것은 char, c를 취하여 이진수를 출력합니다. 어떻게 작동합니까? 특히 두 번째 줄.여기 정확히 무슨 일이 일어 났습니까?
for (int i = 7; i >= 0;i--) {
cout << ((c >> i) & 1);
이것은 char, c를 취하여 이진수를 출력합니다. 어떻게 작동합니까? 특히 두 번째 줄.여기 정확히 무슨 일이 일어 났습니까?
각각 왼쪽에서 오른쪽으로 비트 인 위치 7에서 0까지의 비트를 취하며, 각각에 대해 1 또는 0을 기록합니다. & 1
은 오른쪽으로 시프트 한 후 i 번째 비트를 분리하는 데 사용됩니다 i
장소.
예 : 이진 0x41
01000001
또는 동등
주어 문자 'A':
010000001 >> 7 ==> 0 ==> & 1 ==> 0
010000001 >> 6 ==> 01 ==> & 1 ==> 1
010000001 >> 5 ==> 010 ==> & 1 ==> 0
010000001 >> 4 ==> 0100 ==> & 1 ==> 0
010000001 >> 3 ==> 01000 ==> & 1 ==> 0
010000001 >> 2 ==> 010000 ==> & 1 ==> 0
010000001 >> 1 ==> 0100000 ==> & 1 ==> 0
010000001 >> 0 ==> 01000001 ==> & 1 ==> 1
그것은 적절한 문자 c를 행 다음 비트 시프트된다. 그런 다음 AND가 1이면 해당 비트가 1이면 결과가 반환되고 그렇지 않으면 0이 반환됩니다.
정말 고마워요! –
char가 1 바이트 (8 비트) 일 때만 7 비트 위치를 차지하는 이유 – 0x499602D2
"복용량 7" –