파다 평범일상
디지털 회로, 컴퓨터가 사칙연산을 하는 방법 본문
반응형
디지털 회로 게이트
- 입력값 (Input)은 A와 B인 전기신호가 있다.
- "AND 연산"은 입력값이 모두 1일때 1을 반환한다.
- "OR 연산"은 입력값중에 1있을때 1을 반환한다.
- "XOR 연산"은 입력값이 서로 다를때 1을 반환한다.
CPU는 산수연산을 하는 전자 계산기이다
컴퓨터의 정수 뺄셈
- 뺄셈에 대한 이야기가 나오면 "보수"를 생각해야 한다.
- 6에 4를 더하면 10이다.
- 즉, 4는 6에 대한 보수이다.
- 보수의 덧셈은 자동으로 뺄셈이 이루어진다.
- 2진수에서도 "보수"를 생각하면 된다.
- 2진수에서 0은 1로, 1은 0으로 뒤집으면 1의 보수가 된다.
- 1의 보수에서 1을 더하면 2의 보수이다.
- 어떤 숫자에 2의 보수를 더하면 자동으로 2진수 뺄셈이 된다.
- 2진수 13 - 2진수 6의 계산 예제를 보자.
- 2진수 13은 1101 이다.
- 2진수 6은 0110 이다.
- 0110의 1의 보수는 0과 1만 변경하면 되므로 1001이 된다.
- 1001에 더하기 1을 한다면, 1010이 된다.
- 13의 이진수 1101에 1010을 더하면 10111이 되지만, 자리올림된 수는 버린다.
- 자리올림된 숫자를 버리고 4 Bit만 봤을때 0111이므로 7이된다.
컴퓨터의 정수 곱셈
- 곱셈은 기본적으로 덧셈을 여러번 수행하면 된다.
- 여러번 덧셈보다 효율적으로 곱셈 계산하는 방법이 있으며, 그것은 "Shfit" 연산이다.
- 밀어내는 연산을 "Shift"라고 한다.
- 밀어낸 자리에 0을 채우는것을 "Padding" 이라고 한다.
- 왼쪽으로 밀어냈기에 오른쪽에 빈자리가 생긴다.
- 빈자리에는 0을 채운다.
- 곱셈의 "Shfit" 연산은 Bit가 나열되어 있을때 왼쪽으로 Bit를 밀어내는 것이다.
- 10진수 5에 2를 곱하는 과정이다.
- 10진수 5를 2진수로 나타내면 0101이다.
- 0101을 왼쪽으로 한번 "Shfit"를 하게되면, 오른쪽에서 "Padding"이 발생하여 01010이 된다.
- 자리올림된 왼쪽 맨 마지막을 버리면 1010이 남게된다.
- 2진수 1010은 10진수 10이 된다.
컴퓨터의 정수 나눗셈
- 나눗셈은 기본적으로 뺼셈을 여러번 수행하면 된다.
- "피제수" / "제수"로 표현되며 과정은 뺴기로 진행된다.
- "피제수"에서 "제수를" 뺀다.
- 뺀 결과가 "제수"보다 크거나 같으면 계속 반복한다.
- 뺸 결과가 "제수"보다 작으면 그만한다.
- 몇번이나 반복했는지가 나눗셈의 결과이다.
- 만약 "제수"가 0이라면, 위의 과정은 무한정 반복하게 되므로 절대 하지 말아야 한다.
- 무한정 반복하다가 터져버린 CPU가 있다.
- 동일하게 밀어내는 연산을 "Shift" 라고 한다.
- 동일하게 밀어낸 자리에 0을 채우는것을 "Padding" 이라고 한다.
- 오른쪽으로 밀어냈기에 왼쪽에 빈자리가 생긴다.
- 빈자리에는 0을 채운다.
- 나눗셈의 "Shfit" 연산은 Bit가 나열되어 있을때 오른쪽으로 Bit를 밀어내는 것이다.
- 10진수 6을 2로 나누는 과정이다.
- 10진수 6을 2진수로 나타내면 0110이다.
- 0110을 오른쪽으로 한번 "Shift"를 하게되면, 왼쪽에서 "Padding"이 발생하여 00110이 된다.
- 자리올림된 오른쪽 맨 마지막을 버리면 0011이 된다,
- 2진수 0011은 10진수 3이 된다.
'컴퓨터 IT > 얕은 컴퓨터 지식과 프로그래밍' 카테고리의 다른 글
서버/클라이언트 프로그래밍을 위한 로드맵 (0) | 2023.09.22 |
---|---|
CMake와 CPack으로 프로젝트 제품 패키지하기 (0) | 2023.07.26 |
컴퓨터가 사진을 다루는 방법은? (0) | 2023.06.24 |
컴퓨터가 글자를 어떻게 다룰까? (0) | 2023.06.24 |
1bit와 디지털 (0) | 2023.06.18 |
Comments