728x90

 

2014.03.11 수업 ver1_0a.docx

 

2014. 03. 11 수업 및 과제 


1. 비트 연산자 

 1.1 CPU 구성 

ALU(Arithmetic Logic Unit):산술논리 연산장치

-산술연산: 덧셈, 뺄셈, 곱셈, 나눗셈

-논리연산: AND, OR, NOT, XOR..

CU(Control Unit) : 제어 유니트

-프로그램 코드(명령어)를 해석/실행하기 위한 제어신호 하드웨어 모듈

레지스터(Register)

-cpu내부에 위치한 기억장치

-특수 목적용 레지스터

-일반 목적용 레지스터

 1.2 & 비트단위 AND 연산(4byte -> 32bit) 

 int iNum1=3;

int iNum2=4;

int iNum3=iNum1&iNum2; 

 3

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 1

 1

 4

 0

 0

 0

 0 

 0 

 0 

 0 

 0 

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 0

 1

 0

 0

 7  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0  0

 0

 

4byte -> 32bit

 

 1.3 | 비트단위 OR 연산(4byte -> 32bit) 

 A | B  C 
 0

 0

 0

 0

 1

 1

 1

 0

 1

 1

 1

 1

 

 1.4 ^ 비트단위 XOR 연산(4byte -> 32bit) 

 A ^ B

 C 
 0

 0

 0

 0

 1

 1

 1

 0

 1

 1

 1

 0

 

 1.5 ~(틸드) 비트단위 NOT 연산(4byte -> 32bit)        

~ A

 B 

 0

 1

 1

 0

 

 

예제) iNum1 = 0xFFFFFFF0;

 

   iNum3 = ~iNum1;
   printf("iNum1 의 결과: %x \n", iNum1);
   printf("NOT[~] 의 결과: %x \n", iNum3);

결과) iNum1 의 결과: fffffff0   (1111 1111 1111 1111 1111 1111 1111 0000) 

 

   NOT[~] 의 결과: f       (0000 0000 0000 0000 0000 0000 0000 1111) 

 

 

 1.6 ^ 비트단위 XOR 연산(4byte -> 32bit) 

 A ^ B

 C 
 0

 0

 0

 0

 1

 1

 1

 0

 1

 1

 1

 0

 

1.7 >> << Shift 연산자 :오른쪽/왼쪽 이동(4byte -> 32bit) 

     [예제]

[결과]

 

1.8 >> << Shift 연산자 :오른쪽/왼쪽 이동(4byte -> 32bit) 

 아래 출력 결과해석;

  signed int: 범위

  unsigned int :

 

1.8.1 << Shift 연산자 

-좌로 밀면 2배수로 크짐 > 결국 0이 된다

1.8.2 >> Shift 연산자 

-우로 밀면 2나누기 몫의 값이 발생 > 결국 -1값을 만난다.

☞ Shift 연산이 (*)곱하기나 (/)나누기 보다 연산 속도가 빠르다.

    현재는 컴파일러가 알아서 해줌. 

 

2. 상수 연산자 

- 상수 ≠ 변수 

 iNum = 100;

 L(Left) Value

 

  R(Right) Value

  iNum

=

 100

 메모리 공간 (변수).

 상수는 올수 없음.

 주소를 가진다.

 

 변수, 상수 올 수 있음.

 

 

 

 

변수를 상수로 만드는 키워드

int, include, float..등등 > 변수이음으로 쓸수 없다.

 

 2.1 constant

       - 한번 지정하면 변하지 않는 수

       - Read Only

       - constant 선언 : const int ciNum = 100;

[예제]

#include <stdio.h>
void main()
{
  int iNum=3;
  const int ciNum=100;
  iNum=200;  
  ciNum=1000;    --> const int로 정의 값을 넣을 수 없으며 100으로 고정.

  printf("%d \n" , iNum);  
  printf("%d \n" , ciNum);
  
  return 0;  
}

       [결과]   ciNum=1000;  에러 메세지    

     

   

 2.2 sizeof()  

자료형의 크기 확인 하는 연산자

[예제]

#include <stdio.h>
void main()
{
  char ch=9;
  int iNum=1052;
  double dNum=3.1415;

  printf("변수 ch의 크기 : %d \n"sizeof(ch));
  printf("변수 iNum의 크기 : %d \n"sizeof(iNum));
  printf("변수 dNum의 크기 : %d \n"sizeof(dNum));

  printf("char의 크기 : %d \n"sizeof(char));
  printf("int의 크기 : %d \n"sizeof(int));
  printf("long의 크기 : %d \n"sizeof(long));
  printf("long long의 크기 : %d \n"sizeof(long long));
  printf("float의 크기 : %d \n"sizeof(float));
  printf("double의 크기 : %d \n"sizeof(double));

  return 0;  
}

[결과]

 

'…™업무일지。' 카테고리의 다른 글

[smart]이재우-20140313  (0) 2014.03.13
[smart]이재우-20140312  (0) 2014.03.12
[smart]이재우-20140310  (0) 2014.03.10
[smart]이재우-20140307  (0) 2014.03.07
[smart]이재우-20140306(2)  (0) 2014.03.06