달력

12

« 2017/12 »

  •  
  •  
  •  
  •  
  •  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  
  •  
  •  

'문자열'에 해당되는 글 1

  1. 2008.11.07 문자열을 바이너리로 표현하기 (1)
#include <stdio.h>
#include <string.h>

int main()
{
    char *str = "google";
    int length = strlen(str);

    for(int i=0; i < length; i++){
        for(int j = sizeof(str[i])*8-1 ; j>-1 ; j--){
            if(str[i] & ( 1 <<  j) )
                printf("1");
            else
                printf("0");
        }
        printf(" ");
    }

    printf("%d",'g');

    getchar();

    return 0;
}

이 소스의 핵심은 바로 이 부분이다.(실은 이 것 밖에 없다-0-)

for(int j = sizeof(str[i])*8-1 ; j>-1 ; j--){
            if(str[i] & ( 1 <<  j) )
문자열의 처음의 g부터 마지막 e까지 한 문자당 위의 반복문을 수행한다.
str[i] & 1 << j 가 어떻게 동작하는 지 보자

g의 값은 이진 출력하면  0110 0111이다.
그리고 j가 처음에 7인 경우 if문에 들어 있는 1 << j는
1000 0000 인 이진값이다. 그 다음은 j 가 6일땐
0100 0000
0010 0000
.
.
.
요런식으로 반복되면서 AND연산을 해주면 바이너리 표현을 얻을 수 있게된다.
저작자 표시
신고
TAG
Posted by 에어림