티스토리 뷰
반응형
※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.
예1) int 자료형에서 데이터 overflow시 전혀 다른 값이 나오는 이유
int 자료형은 2byte의 크기의 메모리를 사용한다. 2byte를 bit로 환상하면 16bit가 되는데 그 중 1bit는 양, 음수를 판별하는 부호로 사용된다. 그래서 실제론 15bit를 사용하는데, 이는 unsigned int와 signed int의 표현 범위가 달라지는 이유이기도 하다.(unsigned는 부호비트 1bit를 연산비트에 더해 16bit를 사용하기 때문에) 만약 int형 변수(signed int)에 15bit로 표현하기 부족한 값이 들어간다면 그 오버된 값이 2진수로 변환되어, 그 값이 15bit에 잘려서 들어가게 된다. 그 과정에서 부호 비트를 건드릴 수도 있는데 부호비트가 1이 되면 음수로 표현되므로, 출력 시 전혀 엉뚱한 값이 나오게 되는 것이다.(심지어 음수표현을 2의 보수법으로 하기 때문에 더더욱 엉뚱한 값이 튀어나온다.(2의 보수 : 2진수에 1의 보수+1)
반응형
'개인공부 > C and C++' 카테고리의 다른 글
struct member alignment(구조체 멤버 정렬)에 대해 (0) | 2014.01.16 |
---|---|
realloc, calloc 함수 및 예제 (1) | 2014.01.16 |
strlen, strcmp, strcat, strcpy, strrev, strtok, atoi, itoa 설명 및 함수로 구현 (0) | 2014.01.16 |
Call by value와 Call by reference에 대해 (5) | 2014.01.16 |
컴파일러(Complier), 링커(Linker)에 대해 (1) | 2014.01.16 |
변수와 메모리 관계에 대해 (0) | 2014.01.16 |
printf, scanf 를 제외한 표준입출력 함수들의 차이 (0) | 2014.01.16 |