프로그래밍

 3198, 1/160 회원가입  로그인  
   wjdwls23
   프로그래밍중 궁금한것.

http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=2910 [복사]


/* 비트 연산 */
#include <stdio.h>
int main()
{
    int a=0xAF; // 10101111 에서 0xAF 를 의미하는게 뭔가요 A는 16진수의 11 F는 16을 나타 내는거같은데
    int b=0xB5; // 10110101

    printf("%x \n", a & b); // a & b = 10100101    
    printf("%x \n", a | b); // a | b = 10111111
    printf("%x \n", a ^ b); // a ^ b = 00011010
    printf("%x \n", ~ a); // ~a = 1....1 01010000
    printf("%x \n", a << 2);// a << 2 = 1010111100
    printf("%x \n", b >> 3); // b >> 3 = 00010110

    return 0;
}


위에 말대로 0xAF의 의미와 0xB5의 의미좀알려주세요. 또..%x 는 a 의값을 16진수로 출력하라 는뜻인데 예를들어
printf("%x \n", a & b); 은 a & b 의AND 연산을 통한 결과를 16진수로 출력하라는 뜻인가요 ?
물어보기도 쪽팔린거지만 이해가안가서 진도가안나가네요 ㅠㅠ

  Hit : 4860     Date : 2011/03/12 06:17



    
befehlen 0xAF는 16진수로 AF를 의미하며 이는 10진수로 175입니다. 0x는 16진수임을 나타내기 위해서 붙여주는 것입니다. 0xB5도 마찬가지이겠지요.

%x는 16진수로 출력이 맞습니다.
2011/03/12  
wjdwls23 계산법좀알려주세요 프로그램쓰기전에 이해를 해야됄꺼같아서
AF 는 16 진수로 10 , 15 인데 10진수로 나타낼려면(10X10)+(5X5)= 175 인가요 ? 계산법좀요
B5 도 같이 계산법좀 알려주십쇼...
2011/03/12  
befehlen A와 F는 따로가 아닙니다. AF는 A0+F입니다. 2자리수 숫자라는 의미이죠. 윈도우의 공학용 계산기를 두드리심이 빠르리라 생각됩니다. 2011/03/12  
befehlen 아... 추가로.... 0xB5는 181이군요.... 2011/03/12  
/x7375696e6567 음..
0x(a = 10 b = 11 c = 12 d = 13 e = 14 f = 15)
입니다..

이진수 - 십육진수 변환법 알려드리자면

예를들어 이진수 19의 경우
0001 0011 인데요

각각 4비트씩 나눠서
0001 = 1
0011 = 3 이므로
0x13 으로 나타내실수있습니다.
2011/03/12  
befehlen 그리고 굳이 계산법이 필요하시다면

0xAF = 0xA0 + 0x0F
0xA0 = 0xA * 16 = 10 * 16 = 160
0x0F = 15
0xAF = 160 + 15 = 175

입니다.
2011/03/12  
/x7375696e6567 befehlen//
그건 너무 2진수-10진수식의 계산법과 비슷하네요..
특히 네트워크쪽 경우
2진수 - 16진수의 변환이 자주일어나기때문에
제가 알려드린방법으로 계산하시는게 조금더 편합니다
2011/03/12  
befehlen /x7375696e6567 //
음... 질문을 하신 분이 16진수의 개념 자체를 제대로 모르시는 것 같아서 매우 쉽게 풀어드린 것일 뿐입니다.
2011/03/12  
/x7375696e6567 befehlen//
아네 그렇군요 ㅋㅋ..

일단 질문자님 2진수-16진수도 살짝 알아두시기 바랍니다.
제가 처음배울땐 저걸 알려주는 책이나 강의블로그를 못찾아서..
원서에서 봤을때정말 속시원했어요
2011/03/12  
wjdwls23 네 두분다 정말감사하고 대충 개념은잡힌거같아요 ~~ 감사합니다 2011/03/12