최근 다시 정리:
[프로그래밍언어(Programming Language)/C || C++] - 2의 보수, 2's complement [C]
솔직히 그냥 이진법만 알지
컴퓨터에 관심이 하나도 없으면 모를 것 같은 2의 보수에 대해서 알아보려고 한다.
나도 처음에는 감이 하나도 안왔다... 뭐길래??
우선 컴퓨터는 2진수를 사용한다. 0과 1 이거는 컴퓨터를 배우지 않아도 살다보면 알게 되는 상식 중에 하나였다.
그런데 우리는 2진수에서 음수를 표현할 때 -하나 붙혀서 표현했지만 컴퓨터는 어떻게 표현할까? 라는 의문을 가진다.
(안 가졌으면... 그럴 수 있지)
아무튼 컴퓨터는 음수를 010101로 어떻게 표현할까? 그래서 나온 것이 2의 보수이다.
우선 MIPS를 배웠으니 MIPS에서는 수 표현을 어떻게 할까부터 알아보자
분명 우린 MIPS가 32비트 크기의 레지스터라고 배웠다.
그렇다면 1011(two)는 어떻게 표현할까??
답부터 보자면 이렇게 된다. 우리가 숫자를 표현할 때와 마찬가지로 오른쪽이 가장 작은 자리 수이다.
**이를 MSB(Most Siginificant Bit)라고 말한다. 가장 왼쪽의 비트가 가장 큰 자리 수 라는 뜻이다.
뭐 32비트니까 2^32가지의 숫자를 표현할 수 있겠거니 할 수 있다.
맞다. 그런데 여기서도 음수는 아직 안보인다
???
**눈치가 빠른 사람은 2^32의 양수를 표현할 수 있다면 2^31(양수) + 2^31(음수) 로 표현할 수 있지 않을까?
라고 생각한다면 굿구굿
그래 1비트로 부호를 표현한다고 하자
부호를 어디다 붙여야 그냥 이진법만 알지
컴퓨터에 관심이 하나도 없으면 모를 것 같은 2의 보수에 대해서 알아보려고 한다.
나도 처음에는 감이 하나도 안왔다... 뭐길래??
우선 컴퓨터는 2진수를 사용한다. 0과 1 이거는 컴퓨터를 배우지 않아도 살다보면 알게 되는 상식 중에 하나였다.
그런데 우리는 2진수에서 음수를 표현할 때 -하나 붙혀서 표현했지만 컴퓨터는 어떻게 표현할까? 라는 의문을 가진다.
(안 가졌으면... 그럴 수 있지)
아무튼 컴퓨터는 음수를 010101로 어떻게 표현할까? 그래서 나온 것이 2의 보수이다.
우선 MIPS를 배웠으니 MIPS에서는 수 표현을 어떻게 할까부터 알아보자
분명 우린 MIPS가 32비트 크기의 레지스터라고 배웠다.
그렇다면 1011(two)는 어떻게 표현할까??
답부터 보자면 이렇게 된다. 우리가 숫자를 표현할 때와 마찬가지로 오른쪽이 가장 작은 자리 수이다.
**이를 MSB(Most Siginificant Bit)라고 말한다. 가장 왼쪽의 비트가 가장 큰 자리 수 라는 뜻이다.
뭐 32비트니까 2^32가지의 숫자를 표현할 수 있겠거니 할 수 있다.
맞다. 그런데 여기서도 음수는 아직 안보인다
???
**눈치가 빠른 사람은 2^32의 양수를 표현할 수 있다면 2^31(양수) + 2^31(음수) 로 표현할 수 있지 않을까?
라고 생각한다면 굿구굿
그래 1비트로 부호를 표현한다고 하자
이를 부호와 크기(sign and magnitude) 방법이라고 한다.
부호를 어디다 붙여야할까? 왼쪽 끝에? 오른쪽 끝에?.. 이 외에도 많은 문제점이 있다
+0 과 -0은 값이 같음에도 따로 존재하게 되는 것이다.
그래서 결국 이 방법은 폐기해버리고 새로운 방법을 찾았다
++인간은 역시 불편해야 발전한다
우선 이 질문을 해봤다
"작은 수에서 큰 수를 뺄 때 부호 없는 수의 경우에 결과가 어떻게 될까?"
답은 0들로 시작되는 수에서 빌림을 수행해서 결과는 1로 시작하는 수가 되는 것이다.
자세한 내용은 생략하고//생략했지만 위의 답을 생각해본다면 0이 양수고 1이 음수인 이유를 알게 된다
각설하고
맨 처음 비트가 0이면 양수 1이 나오면 음수가 된다
그래서 결국 32비트의 수 표현 범위는
이렇게 된다.
0 ~ (2^31 - 1)
-(2^31)~0
이렇게 되겠다.
또 양수인지 음수인지 알려면 맨 처음 비트만 조사하면 되겠다.
++ 이진법>> 십진법으로 바꾸기
'컴퓨터(Computer Science) > 컴퓨터구조(Computer Arichitecture)' 카테고리의 다른 글
메모리 계층구조, Memory Hierarchy 에 대한 보충내용[컴퓨터구조] (0) | 2020.06.01 |
---|---|
캐시, Cache - 기본 원리 [컴퓨터구조] (1) | 2020.05.25 |
컴퓨터 성능이 생각대로 늘어나지 않는 이유, 암달의 법칙(Amdahl's Law)[컴퓨터구조] (0) | 2020.05.18 |
컴퓨터의 성능을 가로막는 전력, Power Wall [컴퓨터구조] (2) | 2020.05.17 |
컴퓨터 구조 분야에 대한 8가지 아이디어 [컴퓨터구조] (0) | 2020.05.16 |