본문 바로가기
코스웨어/16년 스마트컨트롤러

20160329-업무일지-허도경-로봇제어-환경변수

by 알 수 없는 사용자 2016. 4. 4.
728x90
반응형




이것이 커져서 인터넷으로 바뀌엇고 국방성은 보안을 위하여 여기서 나갔다.

---------------------------------------------------------------------------------------------------------
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

양수 출력 가능 수를 넘어서서 -119라는 수가 나옴

cNum>>1

 0

이 되어야 하지만 위에서 보듯이 양수 출력 가능 수를 넘어섰기에 음수 출력 되어야 한다

∴앞에 1을 붙여넣는다. 그것으로 -임을 계속 유지 시킨다.

1 

음수의 값을 취하기 위하여 2의 보수한 값인 00111011+1을 하여 60즉 -60을 얻게 된다.

cNum>>3

 1

1

0

음수로 되었을때 밀려서 나간 모든 자리에는 1이 들어간다.

∴위를 2의 보수한 값인 00001110+1을 하여 15즉 -15를 얻게 된다.

ucNum>>1

 0

양수만을 출력 가능하겠금 해 놓았기 때문에 255까지 아무런 제약없이 쓸수 있다.

ucNum>>3

0 

양수만을 호출할때는 나머지 빈곳들은 전부 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: 컴파일 하는 도중에 에러가 남


728x90