* 다음 예제를 통해 결과값을 출력해보고.. 어떤 연산자인지 알아보자


#include <stdio.h>


int main(void)

{

int n1 = 3, n2 = 7;


printf("%d   %d = %d\n", n1, n2, n1 + n2);       // 더하기


printf("%d  -  %d = %d\n", n1, n2, n1 - n2);         // 빼기


printf("%d  *  %d = %d\n", n1, n2, n1 * n2);         // 곱하기


printf("%d  /  %d = %d\n", n1, n2, n1 / n2);         // 나누기


printf("%d %c %d = %d\n", n1, 0x25, n2, n1  %  n2);        // 두수를 나눈 후 , 나머지 값 구하기




n1  +=  n1;                // n1 = n1 + n1;         // 두 수를 더해서 , n1 에 넣기

printf("n1 = %d\n", n1);


n2  -=  n1;                       // n2 = n2 - n1;         // 두 수를 빼서 , n2 에 넣기

printf("n2 = %d\n", n2);



n1 += n1;                     // n1 = n1 + n1;

n1  *=  n2;                       // n1 = n1 * n2;         // 두 수를 곱해서 , n1 에 넣기


printf("n1 = %d\n", n1);


return 0;

}




++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



<논리연산자 예제>


이냐.. 거짓이냐... 판별할때 쓰는 거지...

  1이상의 양수이면 - , 즉 1로 셋팅

  0이거나 음수이면 - 거짓 , 즉 0으로 셋팅


#include <stdio.h>


int main(void)

{

int n1 = 11, n2 = 5;


printf("n1  AND  n2 = %d\n", n1  &  n2);      //  참 & 참 = 참....  참참참...


printf("n1  OR  n2 = %d\n", n1  |  n2);          // 참 | 참 = 참...


printf("n1  XOR  n2 = %d\n", n1  ^  n2);       // 참 ^ 참 = 거짓...


printf(" NOT  n2 = %d\n",  ~ n2);                // ~참 = 거짓...


printf("n1 << 2 = %d\n", n1  <<  2);

printf("(n1 << 2) >> 3 = %d\n", (n1 << 2)  >>  3);      // 둘 다 쉬프트 연산자


return 0;

}




<논리표>


AND (&)

 

 OR ( | )

 A 값

 B 값

 연산결과

 

A 값 

B 값 

연산결과

 0

 0 

 

 0

 0

 1

 

 0

 1

 0

 

 1

0

 1

 1

 

 1

1





XOR (^)

 

 NOT (~)

 A 값

 B 값

 연산결과

 



 0

 0 

 

 

 0

 1

 

 

 1

 0

 

   

 1

 1

 

  



* 쉬프트 

n1 << 2  :  bit 를 좌측으로 2칸 밀어라


 

 

 

 

 

 

 

0

0  


일 때,, 좌측으로 2칸 밀면, 



 

 

 

 

 

 

 

0

0  


즉,  (n은 쉬프트 하는 횟수 대입하면 됨) 만큼 값이 커짐을 알 수 있다.

(노란색 부분은 빈칸으로 자동으로 0이 대입됨)


++++++++++++++++++++++++++++++++


n2 >> 3  :  bit 를 우측으로 3칸 밀어라 


그럼 우측으로 밀때는??

반대겠죠...??


만큼 값이 작아집니다

그럼 뒤에 값이 들어있다면, 값이 짤릴수도 있겠네요..




#include <stdio.h>

#include <time.h>

#include <stdlib.h>


int main(void)

{

int rnum;


srand(time(NULL));

rnum = rand() % 26 + 97;


printf("rnum = %c\n", rnum);

printf("rnum = %c\n", rnum ^ 0x20);

return 0;

}



+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++



    time.h  stdlib.h srand(), time(), rand() 를 사용하기 위해 적음


    stdio.h  는 printf() 를 사용하기 위해 적음


    srand(time(NULL))  부분은,, 시간값에 관계 없이 무작위로 난수생성하라 지시하는 부분이다.


   하지만, 실제 무작위 난수를 만들어내는 것은 rand() 부분이다.





   <rand() % 26 + 97 이라는 부분의 의미>


   1. % 연산자 

      - a % b     a 를 b 로 나누고 남은, 그 나머지 값... 구할 때

      - ? % 26   어떤 숫자를 26 으로 나누고, 나올 수 있는 나머지는 0 ~ 25 로 총 26 개


   2. 알파벳 갯수는 26가지


   3. 97 이란 숫자는, 소문자 'a' 에 해당하므로,  97 + 0 = 'a',  97 + 1 = 'b',  ...  , 97 + 25 = 'z' 

        알파벳소문자로 나올 수 있도록 만든 것이다


+ Recent posts