본문 바로가기

정보처리기사/c언어강의

[C언어(강의)] 11강 (진법변환, 비트연산)

 

[ 흥달쌤 유투브 강의 정리 ] 

https://www.youtube.com/watch?v=avot35M_ETM&t=6s

 


 

(11강) 진법변환, 비트연산자

 

[ 진법변환 ]

(1) 10진수 -> 2진수 (0~1)

19 / 2 = 9 ...1

9 / 2 = 4 ...1

4 / 2 = 2 ...0

2 / 2 = 1 ...0

19  --->  10011


... 32   16   8   4   2   1          => 19를 만들기 위한 자릿수를 채워서 변환해도 됨.

            1    0   0   1   1   


 

(2) 2진수 -> 8진수 (0~7)

1 0 0 1 1               => 3자리씩(7) 자르기

0  1  0  /  0  1  1    

2  1  /  4  2  1     => 이중 1에 해당하는 숫자 더하기

    2      /          3        

1 0 0 1 1   --->    23

 

 

(2) 2진수 -> 16진수 (0~15)

1 0 0 1 1                       => 4자리씩(15) 자르기

0  0  0  1  /  0  0  1  1    

8  4  2  1  /  8  4  2  1     => 이중 1에 해당하는 숫자 더하기

        1      /          3         

1 0 0 1 1   --->    13

 


 

[ 비트연산자 ]

* 비트연산자 종류

 

* &  비트논리곱(AND) _ 둘다 참일때 참   

5 & 3  ( 5 => 0101 , 3 => 0011)

      0 1 0 1

      0 0 1 1

=>  0 0 0 1

      8 4 2 1

5 & 3   --->   1

 

* |  비트논리합(OR) _ 둘중 하나가 참일때 참 

      0 1 0 1

      0 0 1 1

=>  0 1 1 1

      8 4 2 1

5 | 3   --->   7

 

* ^  비트 배타적 논리합(XOR) _ 같으면 거짓 다르면 참 

      0 1 0 1

      0 0 1 1

=>  0 1 1 0

      8 4 2 1

5 ^ 3   --->   6

 

* ~  비트 NOT 

~ 5   => 양수인 경우 +1 하고 - 붙여주기  /  음수인 경우 -1 하고 + 붙여주

~ 5  --->  - 6


[ 예제 ]

19   =>   1  0  0  1  1

13   =>   0  1  1  0  1

    &   :    0  0  0  0  1      =>  1

     |   :    1  1  1  1  1       =>  31

    ^   :    1  1  1  1  0       =>  30

         ... 16  8  4  2  1   (10진수)

 

~ 16   =>  - 17

~ - 16   =>  15

 

0x  =>  16진수라는 표시   //    0x0f  =>  16진수 15   //  %d => 부호있는 10진수 출력 

x = 11 (16진수)  /  0 0 0 1 0 0 0 1 (2진수)

y = 11 & 15  (16진수)  

z = 11 | 15 (16진수)    

 

11   =>    0 0 0 1 0 0 0 1    =>  17 (10진수)

15   =>    0 0 0 0 1 1 1 1

y =   &  :   0 0 0 0 0 0 0 1      =>  1 (16진수)   /  1 (10진수)

z =   |   :    0 0 0 1 1 1 1 1      =>  1f  (16진수)  /  31 (10진수)

                8 4 2 1 / 8 4 2 1   (16진수)

 

x = 17 , y = 1, z = 31

 


* 16진수 (0~15)

0, 1, 2, 3, ... 9, A, B, C, D, E, F,              =>  0 ~ 15

10, 11, 12, 13, ...19, 1A, 1B, 1C, ...1F,

20, 21, 22, 23, ... 29, 2A, 2B, 2C, ...2F,

............

90, 91, 92, 93, ... 99, 9A, 9B, 9C, ...9F,

A0, A1, A2, A3, ...A9, AA, AB, AC, ...AF,

B0, B1, B2, B3, ...B9, BA, BB, BC, ...BF,

............