-
20140307 (2의 보수법, 관계, 논리 연산자)부산IT학원/스마트컨트롤러 2014. 3. 7. 11:17
15일차
------------------------------------------
Magnitude 방식과 2'Complete(2의 보수법)
------------------------------------------
unsigned 붙은것과 안 붙은것
2의 보수법을 취하는 것을 보는 소스다.
#include <stdio.h>
int main()
{
unsigned char cNum1;
char cNum2;
cNum1 = 127;
cNum2 = 127;
printf("%d %d\n", cNum1, cNum2);
cNum1 = 128;
cNum2 = 128;
printf("%d %d\n", cNum1, cNum2);
cNum1 = 129;
cNum2 = 129;
printf("%d %d\n", cNum1, cNum2);
cNum1 = 255;
cNum2 = 255;
printf("%d %d\n", cNum1, cNum2);
return 0;
}출력 화면
------------------
관계, 논리 연산자
------------------
#include <stdio.h>
int main()
{
int iNum1;
int iNum2;
int iNum3;
int iNum4;
int iNum5;
int iNum6;
int iNum7;
int iNum8;
int iNum9;
int iNum10;
iNum1 = 6 > 5;
iNum2 = 6 > 7;
iNum3 = 7 == 6;
iNum4 = !3;
iNum5 = 7 != 6;
iNum6 = 7 <= 7;
iNum7 = 7 && 6;
iNum8 = 8 || 0;
iNum9 = 100;
iNum10 = 7 || (++iNum9);
printf("iNum1 = %d\n", iNum1);
printf("iNum2 = %d\n", iNum2);
printf("iNum3 = %d\n", iNum3);
printf("iNum4 = %d\n", iNum4);
printf("iNum5 = %d\n", iNum5);
printf("iNum6 = %d\n", iNum6);
printf("iNum7 = %d\n", iNum7);
printf("iNum8 = %d\n", iNum8);
printf("iNum9 = %d\n", iNum9);
printf("iNum10 = %d\n", iNum10);
return 0;
}출력화면
여기서 재미있는게 있는데
바로 iNum9의 값이다.
원래 예상대로라면 101이 나와야 하지만 100이 나왔다.
왜냐하면 cpu에서도 일을 적게하려 하기에 || (or) 을 실행 시
앞의 조건이 참이면 뒷 조건은 실행하지 않는다.
반대로 앞 조건이 거짓이면 뒷 조건을 실행한다.
'부산IT학원 > 스마트컨트롤러' 카테고리의 다른 글
20140311 (비트연산자, 상수, 변수, const, sizeof) (0) 2014.03.11 20140310 (scanf, 16진수 10진수, 실수) (0) 2014.03.10 20140306 (0) 2014.03.06 20140305 (C언어 시작) (0) 2014.03.05 20140304 (cl 환견변수 등록) (0) 2014.03.04