24.3에서 부호가 음수일때 모자라는 공간은 부호 비트의 값인 1로 채워진다고 설명이 되어있는데,113과-15의 시프트연산을 보면 왜 -15의 비트값을 왼쪽으로 2번 이동할때 1100 0111이 아니라 1100 0100으로 0으로 채워질까요?
Unit 24.3의 그림 24-3을 보면 단계별로 설명되어 있습니다.
오른쪽을 보면
-125를 오른쪽으로 5번 이동합니다. 이를 C 언어 코드로는
-125 >> 5로 표현합니다.
-125 = 1000 0011
입니다. 첫 번째 1은 부호 비트이므로 변하지 않습니다. 따라서 없다고 생각하는 게 더 편합니다.
오른쪽으로 1비트 이동을 하면 첫 번째 비트 1은 부호 비트이므로 고정입니다.
1X00 0001
오른쪽으로 1번 이동하면 X가 빈 공간이 됩니다.
이렇게 빈 공간을 음수는 1로 채웁니다. 비트 이동으로 빈 공간을 양수는 0으로 채우고, 음수는 1로 채웁니다.
컴퓨터 CPU는 음수를 보수로 표현합니다. CPU마다 보수 표현은 다르지만, 보통은 2의 보수로 표현합니다.
디지털 논리회로 및 실습
http://www.kocw.net/home/search/kemView.do?kemId=339668&ar=link_gil
[더배움] 2016 계리직 컴퓨터일반 제16강 컴퓨터구조 문제 p50
https://www.youtube.com/watch?v=k3RYkrz4ZnU
컴퓨터 공학 전공 교재에서 전문적으로 학습할 수 있습니다. 숫자 표기는 컴퓨터 구조나 논리회로 수업 시간에 다루게 됩니다.
가장 유명한 교재는 William Stalling의 <Computer Organization and Architecture, 10th Ed.>이 있습니다. 무료 10판까지 나올 정도로 지속적으로 개정되고 있습니다.
http://www.yes24.com/24/Goods/26035748?Acode=101
마찬가지로 유명한 교재는 David Patterson의 <컴퓨터 구조 및 설계 5판>이 있습니다. 이 책은 번역서가 있습니다.
http://www.yes24.com/24/goods/16426341?scode=032&OzSrank=3
보통 컴퓨터 공학 2~3학년에 학습하게 되어 있습니다. 하드웨어 구조를 설명하기 때문에 매우 어렵다고 알려져 있습니다. 미국 amazon.com에서도 전공 교재인 이 책들에 대한 평이 좋지는 않습니다.
그러나 인터넷에는 잘못된 정보가 널리 퍼져 있으므로 전공 교재로 학습하는 것을 권장합니다.
하드웨어 중심의 전공 교재보단 프로그래머 관점에서 좀 더 쉽게 서술한 책은 Randal Bryant의 <Computer Systems: A Programmer's Perspective>가 있습니다.
번역서도 있습니다.
http://www.yes24.com/24/goods/31950404?scode=032&OzSrank=3
이들 컴퓨터 구조 책에서 숫자 표현은 보통 50-100쪽 분량에 달합니다.
프로그래밍을 전혀 모르는 입문자를 위한 C 언어 입문서에 전공 2-3학년 수준의 컴퓨터 구조, 즉 숫자 표현을 100쪽 분량으로 설명하는 것은 적절하지 않다고 판단하여 간단하게 비어 있는 비트를 양수일 때는 0으로 채우고, 음수일 때는 1로 채운다는 결과만 공식처럼 설명했음을 양해 부탁드립니다.