이것이 커져서 인터넷으로 바뀌엇고 국방성은 보안을 위하여 여기서 나갔다.
---------------------------------------------------------------------------------------------------------
c언어
(signed) char cNum과 unsigned char ucNum을 1칸씩 밀었을때 일어나는 현상
#include<stdio.h>
int main()
{
char cNum = 0X89;//10진수로 137
unsigned char ucNum = 0X89;
printf("cNum>>1: %d \n", cNum>>1);
printf("ucNum>>1: %d \n", ucNum>>1);
}
unsigned char는 양수 만을 출력한다 0~255까지 출력가능하다.
(signed) char는 반은 음수 반은 양수를 출력해서-127~128까지 출력가능하다.
cNum
1 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
양수 출력 가능 수를 넘어서서 -119라는 수가 나옴
cNum>>1
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
이 되어야 하지만 위에서 보듯이 양수 출력 가능 수를 넘어섰기에 음수 출력 되어야 한다
∴앞에 1을 붙여넣는다. 그것으로 -임을 계속 유지 시킨다.
1 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
음수의 값을 취하기 위하여 2의 보수한 값인 00111011+1을 하여 60즉 -60을 얻게 된다.
cNum>>3
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
∴위를 2의 보수한 값인 00001110+1을 하여 15즉 -15를 얻게 된다.
ucNum>>1
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
양수만을 출력 가능하겠금 해 놓았기 때문에 255까지 아무런 제약없이 쓸수 있다.
ucNum>>3
0 |
0 |
0 |
1 |
0 |
0 |
0 |
1 |
양수만을 호출할때는 나머지 빈곳들은 전부 0을 넣는다. 17이라는 수를 얻을 수 있다.
다음중 맞는것은?
1.char A = '45';
2.char A = "45";
3.char *p= '45';
4.char *p = "45";
정답은 4번이다.
우리가 컴파일을 하다보면 에러가 뜬다 하지만 그것은 에러일뿐 버그는 아니다.
에러에는 두가지가 존재한다.
1.Compile time: 흔히 우리가 컴파일할때 오타혹은 넣지 않은것이 있을때 생긴다.
2.Run time: 컴파일 하는 도중에 에러가 남
'코스웨어 > 16년 스마트컨트롤러' 카테고리의 다른 글
20160330-업무일지-이보원 라즈베리파이 명령어 실습 (0) | 2016.04.05 |
---|---|
20160329 업무보고 이보원 라즈베리파이 벡업 하기 및 visual studio 실습 (0) | 2016.04.05 |
20160328 업무보고 이보원 라즈베리파이 원격제어 (0) | 2016.04.05 |
20160404_박진한_업무일지_시리얼제어 (0) | 2016.04.05 |
20160404_조재찬_업무일지_전역변수와 포인터 (0) | 2016.04.04 |
2016_04_04_업무일지_노태경 (0) | 2016.04.04 |
20160328-업무일지-허도경-로봇제어-환경변수 (0) | 2016.04.04 |
20160401_노유찬_리눅스 명령어 (1) | 2016.04.04 |