프로그래밍과 잡담

[C언어] 기초 2-1 본문

프로그래밍/C,C++, Win32Api

[C언어] 기초 2-1

크레온 2009. 3. 11. 16:56
비트 연산자..

요거는 나중에 가면 많이 쓰인다.. 엠베디드나 어디든간에 많이 쓰이는거기 때문에...

어쨌든

& 와 | 

비트 연산.. 비트끼리 연산을 하는거다.. 컴퓨터가 하는 방식의 연산을 비트연산이라 한다..

사람 처럼 10진수로

10 + 10 이 아니라 

1010 이진수로 10이다.

  1010
+ 1010
--------
0001  0100 

0001 0100         20을 2진수로 변환하면 이거다..

이렇게 계산을 한다.

수학을 배우면 2진수같은거 배울꺼다 그런식으로 컴퓨터는 계산을 한다..

어쨌거나..

& 이거는 And연산으로

    0101 1101
&  1010 1100
------------------   계산을 하면
    0000 1100             의 값이 나온다.

둘다 1일때만 1이고 둘중에 0이라도 있으면 무조건 0이다..
이게 and 연산

OR은 논리 연산하고 똑같은데

    0101 1101
&  1010 1100
------------------   계산을 하면
    1111 1101        의 값이 나온다.

둘중 한개만 1이 있으면 결과는 1이다.


자, 이건 됬고..

<< ,   >>

<<이거는 좌측 시프트 연산이다..
>>이거는 우측 시프트 연산    부호비트로 채운다.


뭔소리인고 하니..

char k = 10;

이걸  k = k<<1;  좌측 시프트연산을 하면

이걸 출력 하면 결과는 20나온다.


0000 1010     원래 값  10진수로 10

0001 0100     시프트 한 후의 값   10진수로 20이다.

좌측 시프트연산을 1번 하면 그 값이 배로 늘어난다.

10이었으니까 1번 밀었으니까 20이된거다..

이해가 됬으리라 하고   이해가 안되면 연습장에 그려서 하도록...


다음껄로  우측 시프트 연산

우측 시프트 연산이다..

위에 꺼와 똑같은걸  쓴다.. 왜냐 귀찮으니까..


0000 1010     원래 값  10진수로 10

0000 0101      시프트 한 후의 값은 5로 됬다..

즉. 반으로 줄어 든다..




반응형

'프로그래밍 > C,C++, Win32Api' 카테고리의 다른 글

[C언어] 기초 4  (0) 2009.03.11
[C언어] 기초 3  (0) 2009.03.11
[C언어]기초2  (0) 2009.03.11
[C언어] 기초 1  (0) 2009.03.11
[Win32 API]버튼의 폰트 바꾸기..  (0) 2009.03.11
Comments