티스토리 뷰

※ 본 포스팅은 개인공부 후 자료를 남기기 위한 목적임으로 내용 상에 오류가 있을 수 있음을 밝힙니다.


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



공유하기 링크
태그 클라우드
,
프로필사진

Yowu (Yu Yongwoo)

그냥 지나가는 흔한 백엔드개발자423 느낌 입니다
우분투 데스크탑 개발 환경을 선호합니다
최근에는 vscode에 vim 모드 올려서 쓰고 있습니다
개발용 키보드는 역시 해피해킹 프로2 무각입니다
락 밴드에서 드럼을 꽤나 오래 쳤었습니다