검색결과 리스트
글
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 0 1 1 0
B
예제) 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 |
RECENT COMMENT