인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

mikkim님의 프로필 이미지
mikkim

작성한 질문수

개발자를 위한 컴퓨터공학 1: 혼자 공부하는 컴퓨터구조 + 운영체제

ALU와 제어장치

음수 데이터의 표시에 관하여

작성

·

646

4

플래그가 어차피 개입될 문제라면 그냥 처음부터 보수 개념이 아니라 그냥 해당 숫자에 음수 플래그만 도입되면 되는게 아닌가요?

1010(2)의 음수 값을 괜히 0110(2)로 하지말고 똑같이 1010(2)로 하고 음수 플래그만 사용해서요..

답변 2

5

강민철님의 프로필 이미지
강민철
지식공유자

음수 플래그를 이용해 음수를 표현하는 것도 방법일 수 있습니다. 다만 2의 보수 표현에 비해 안좋은 점들도 있습니다.

일단 2의 보수 표현에서는 덧셈과 뺄셈 연산이 더 단순해집니다. 음수+양수이든, 양수+양수이든, 음수+음수이든, 양수+음수이든 모든 연산 과정이 같습니다. 하지만 음수 플래그를 사용하는 경우에는 덧셈과 뺄셈에 대한 별도의 로직이 필요해집니다.

그리고 음수 플래그를 사용하는 경우에는 어쩔 수 없이 부호 표현을 위해 하나의 비트를 할애해야 합니다. 다시 말해 표현할 수 잇는 수의 범위가 줄어들 수 있습니다.

 

0

 

이진수만 봐서는 음수인지 양수인지 판단하기 어려워서 음수 양수 구분하기 위해 플래그를 사용한다 (p.59, p.106)

책에 살짝 헷갈리게 적혀있긴 한데, 제가 알기론 2진수만 봐도 음수인지 양수인지 데이터의 타입이 명시되어 있다면 실제로 컴퓨터는 구분을 할 겁니다.

예를 들면 8비트짜리 데이터가 있다고 할 때,

unsigned (음수 존재 X) 타입의 데이터라면 데이터의 범위가 0~255가 되지만,

signed (음수 존재 O) 타입의 데이터라면 데이터의 범위가 -128~127 입니다.

signed 타입의 자료형인데 숫자가 128이 넘어간다? 즉, 최상위 비트가 1 이다 (1XXX XXXX 형태) 하면 무조건 음수이고 보수의 형태로 봅니다.

 

근데 ALU에서 연산한 직후에는 연산자에서 데이터를 내보낼 때 타입형을 알 수 없어서? 부호 플래그를 사용해야 하나 봅니다. (저도 이 부분은 잘 모르겠습니다)

 

mikkim님의 프로필 이미지
mikkim

작성한 질문수

질문하기