씨랭아이티

반응형

녕하세요~ 리듬입니다.


저번 글에서는 입력함수와 주석에 대해서 알아봤습니다.


이번 글에서는 연산자에 대해 알아볼게요.


연산자가 뭔지는 다들 아시죠?


기본적으로 + - * / 이런것들..


연산자 종류가 여러가지가 있는데요. 어떤 것들이 있는지 먼저 보면..


대입 연산자, 복합대입 연산자비트 연산자산술 연산자관계 연산자, 논리 연산자, 증감 연산자, 캐스트 연산자, 부호 연산자


많습니다..


이번 글에서는 대입 연산자, 복합대입 연산자, 비트 연산자 이렇게 3개 먼저 알아보고


다음 글에서 3개, 그 다음 글에서 3개 이렇게 배워봅시다.


대입 연산자는요 = 이거이거 뭔지 다들 아시죠??


a=10; a와 10이 같다가 아니고 '10을 a에 대입한다'는 뜻입니다.


쉽죠!?


다음은 복합대입 연산자 볼게요.


+=, -=, *=, /=, %=, &=, |=, ^=, >>=, <<=


음..얘네가 무슨 뜻이냐면요. a+=1; 이거랑 a=a+1; 이거랑 같은 뜻입니다.


a+1을 a에 대입하는거죠.


이것도 쉽죠!?


a+=1;

a=a+1; 

 a-=1;

a=a-1; 

 a*=1;

a=a*1; 

 a/=1;

 a=a/1;

 a%=1;

 a=a%1;

 a&=1;

 a=a&1;

 a|=1;

 a=a|1;

 a^=1;

 a=a^1;

 a>>=1;

 a=a>>1;

 a<<=1;

 a=a<<1;




위에 & , | , ^ , >> , << 얘네는 비트연산자에요.


컴퓨터는 모든 정보들을 이진수로 처리를 하죠??


10진수 5를 2진수로 바꾸면 0000 0101 이런식으로 바꾸는데 저 자릿수 하나하나를 비트라고 생각하시면 됩니다.


c언어



10진수를 2진수를 바꾸려면 2로 나누시면 됩니다.  7을 2로 계속 나누시면 위처럼 나와요~ 0111이 되는겁니다.


일단 & 연산은요 둘다 1이면 1이에요~ 


a=5;이고 a&=1; 이라고 하면 5는 0101, 1은 0001입니다.


0101과 0001을 각 자리수를 비교했을때 양쪽 다 1이면 1인거에요.


그러면 0001이 나오죠?? a에 1이 들어가는겁니다.. 설명이 좀 복잡해보이네요..


밑에 보시면 이해가 되실거에요.



& 비트연산 (AND)

  0110 0111(103)

 0001 1001(25)

0000 0001(1)





다음은 | 연산인데요. 둘 중 하나가 1이면 1이에요.


a=6; a|=8;이면 6은 0110, 8은 1000이죠?


둘 중 하나가 1일때 1이되면 1110이 되는거에요. 그러면 14가 나옵니다. 이해가 되시나요..?



 | 비트연산 (OR)

0000 0110(6)

0000 1000(8)

0000 1110(14)





다음은 ^ 연산인데요. 둘이 다르면 1 같으면 0이에요.


a=26; a^=12;이면 26은 0001 1010, 12은 0001 0110이죠.


밑에 보시면 이해가 가실거에요.


위 아래 비교했을 때 다른 부분을 빨간색으로 표시한거에요.


빨간색만 1이 됐죠?



 ^ 비트연산 (XOR)

 0001 1010(26)

 0000 1100(12)

 0001 0110(22)





다음은 >>,<< 연산이에요. 쉬프트 연산자라고도 합니다.


a=26,a>>=1; 이 연산은 비트를 1만큼 이동시키는 거에요.


밑에 보시면 오른쪽으로 비트 1칸씩 이동됐죠? 그러니까 1과0을 오른쪽으로 옮기는겁니다.


a=26,a<<=1; 이것도 마찬가지입니다. 왼쪽으로 이동시키는거에요.


오른쪽으로 이동한건 1/2가 되고 왼쪽으로 이동한건 2배가 됩니다..



>> 비트연산 

 << 비트연산

0001 1010(26)

0001 1010(26)

0000 1101(13)

0011 0100(52)






그리고 비트연산자에 ~ 연산도 있어요.


0을 1로,1을 0으로 바꿔줍니다.


a=1;


res= ~a;



 ~ 비트연산

 0000 0000 0000 0001

 1111 1111 1111 1110





자 이번 글은 여기서 마치고 다음 글에서 이어가도록 하겠습니다.


수고하셨습니다.


:)
















반응형