

2진수를 4개씩 끊어서 16진수로도 표현할 수 있다.


Signed and Magnitude Numbers :

sign( 0 or 1) |
사인비트에서 최상단 즉 첫번째 칸은 양수(0) or 음수(1)로 사용한다.
나머지 첫번째 칸을 뺀 나머지 n-1비트는 magnitude로 할당된다.
ex) 8비트에서 최대 양수값은 0~255 : 2^7-1 값을 뽑을 수 있다.
음수는 -127도 표현가능하고 -128도 표현가능하다. 왜 그럴까? (끝까지 보면 알수있음)

양수 : Positive Binary Numbers에서는 10진법에서 쓰고 "position numbering systems : 자리수 규칙" 처럼
그냥 그대로 쓰면 된다.
음수 : Negative Binary Numbers에서는 상황이 달라진다.
방법은 3가지다.
1. Sign-and-Magnitude Representation(바로 위에서 배운 비트 표기법)
2. 1's Complement : 1의 보수
3. 2's Complement : 2의 보수
1. Sign-and-Magnitude Representation

-Magnitude 표기법 : (n-1비트)은 바로위에 "position numbering systems : 자리수 규칙" 을 지키면 된다.
-맨 앞에 부호 비트 : Sing은 양수면 0, 음수면 1로 표기한다.
ex) 4bit에서의 예시
0101 = 5
1101 = 5
MSB | LSB |
MSB : Most-Significant-Bit
LSB : Least-Significant-Bit
하지만 컴퓨터는 이 표기법을 불편해한다.

양수끼리의 계산법은 Sign은 0으로 치고 나머지는 자리수 계산법을 해준다.
음수끼리의 계산법은 Sign이 둘다 1이라면(AND)의 조건을 붙여서 계산해준다.
Sign비트가 다른 비트끼리의 계산은??
7 - 2 --> 7 + (-2) 으로 변환한다.
Magnitude의 영역은 양, 음수의 개념이 없고 "크기의 절대값"이기 때문에 큰 값에서 작은 값을 빼야한다.
만약, 두 비트의 부호가 다른경우 둘 중에 Magnitude가 큰 값에서 작은 값을 빼고, 큰 값의 부호를 가져 와서 쓴다.
2. 1's Complement

2진수로 이루어진 4비트에서 음수를 취할때, 1의 보수를 사용하는방법은
0을 1로, 1을 0으로만 바꿔주면 된다. ex) 5=0101, -5=1010
하지만 1의 보수를 이용하여 정확한 값을 표출할려면 계산 후에 +1을 해줘야 결과 값이 나온다.
ex) 3 + (-2) = 1 에서의 1의 보수 계산법
0011 : 3
1101 : -2 (2=0010, 음수이고 1의 보수를 취해주면 -2=1101)
-----------
10000 이 나온다.
4비트니까 맨 앞에 1은 오버플로우로 간주하기 때문에 사용하지 않고,
0000이 나오고, 1의 보수계산법이기 때문에 +1을 해주면
0001로 1이라는 결과 값이 나온다.

3. 2's Complement

1의 보수 계산법은 결과 값에 +1을 해서 정확한 값을 알아냈는데,
2의 보수 계산법은 결과 값이 아닌, 1의보수를 취한 K값에 +1 해서 바로 정확한 값을 알아내는 것이다.
ex) 3 + (-2) = 1 에서의 1의 보수 계산법
0011 : 3
1110 : -2 (2=0010, 음수이고. 1의 보수를 취해주면 -2=1101, 2의 보수는 1의 보수의 +1 이니 -2=1110)
-----------
10001 이 나온다.
4비트니까 맨 앞에 1은 오버플로우로 간주하기 때문에 사용하지 않기 때문에 0001 = 1 이라는 결과 값이 나온다.

'Study > Digital Logic Design' 카테고리의 다른 글
논리회로설계 3-2 (0) | 2022.03.22 |
---|---|
논리회로설계 3-1 (0) | 2022.03.22 |
논리회로설계 2-1 (0) | 2022.03.21 |
논리회로설계 1-2 (0) | 2022.03.21 |
논리회로설계 1-1 (0) | 2022.03.21 |