전자 계산기의 원리, 구조
"계산기에 대해 다루는 사이트이니, 계산기에 대한 원리를 알아보는 글은 있어야겠구나".... 싶었습니다. 그래서 잘 모르는 내용임에도 불구하고, 이것저것 찾아서 글을 작성합니다. 틀린 내용이 있다면 지적하여 주시면 감사하겠습니다.
1. 전자 계산기란?
전자 계산기란, '펌웨어'나 '연산 알고리즘' 을 이용하여 수학적 계산을 빠르고(!) 정확하게(?) 수행하도록 만든 장치"를 이르는 말입니다.
일반 계산기나 보급형 공학용 계산기에는 운영 체제랄 것이 없으며, 간단한 펌웨어가 하드웨어와 직접적으로 작동해 연산을 처리하지만,
고급형 전자 계산기는 작은 컴퓨터로 보셔도 될 정도로 복잡한 장치가 결합되어 있습니다.
* 정확하게에 물음표가 붙은 이유는, 어떠한 경우에는 정확한 답을 찾기보다는 과정과 결과에서 근사값을 이용하는 경우가 많기 때문입니다.
2. 계산기의 역사
|
전기/전자 이용 전 |
손가락 내지 돌맹이? 나뭇가지?
|
|
전기/전자 이용 후 |
|
주판은 사람의 동작에 의존하기 때문에 속도의 한계가 있을 수밖에 없고, 오류발생 확률도 높습니다. 그리고 사칙연산 이외의 다른 계산이 어렵죠. 그러한 한계들을 극복하기 위해 기계 장치들이 개발되었고, 기계 장치들의 한계를 극복하고자 전자 장치를 이용한 계산기까지 발전을 하게 된 것입니다.
3. 원리
주판이나, 전자 계산기나 개발 목적이 같기 때문에, 도구를 사용하여 수학적인 연산을 수행하고 저장하고 표시한다는 본질에 있어서는 공통적입니다.
차이가 있다면 아래와 같습니다.
| 주판 | 전자 계산기 | |
| 진법 | 10진법 | 2진법 |
| 명령주체 | 사람의 뇌 | 내장 프로그램 |
| 동작주체 | 사람의 손가락 | 전자 부품 |
전자부품은 2진법 계산에 적합합니다. 이는 0과 1의 두 가지 상태를 전자의 흐름으로 쉽게 구현할 수 있기 때문입니다.
따라서 전자계산기의 계산 원리를 이해하려면 2진법을 먼저 이해해야 하고, 전자부품에서 2진법이 어떻게 구현되는지를 이해해야 합니다.
4. 논리회로 Arithmetic Logic Unit
계산기에서는 위에서 살펴본 바와 같이 2진법으로 모든 계산을 수행합니다.
계산을 수행하는 가장 작은 단위는 논리 회로이고, 논리 회로는 논리 게이트로 구성됩니다.
ㄴ 논리 게이트는 불 대수를 계산할 수 있는 전자 소자입니다.
따라서 전자계산기의 작동방식을 이해한다는 것은, 논리회로를 이해한다는 것과 동일한 의미를 같습니다.
가장 기본적인 논리 회로는 가산기(adder)로, 덧셈을 포함해 다양한 논리 연산과 곱셈, 나눗셈도 처리하는 Arithmetic Logic Unit(ALU)의 일부입니다.
아래와 같은 구조를 갖습니다.

ㄴ 전가산기 회로도
전자계산기는 위와 같은 논리 회로들을 이용하여, 입력된 숫자들을 (2진법) '가(+)/감(-)/승(×)/제(÷)' 하고 수학적 결과를 얻는 장치라고 말할 수 있습니다.
* 자세한 내용은 웹에서 "논리회로"로 검색해서 찾아보세요. 내용이 방대합니다.
ALU(Arithmetic Logic Unit)는 기본적인 산술 연산과 논리 연산을 처리하는 CPU의 핵심 구성 요소 중 하나로, 다양한 논리 회로들로 구성되어 있습니다.
ALU가 처리하는 작업의 종류에 따라 여러 종류의 회로가 결합되어 있습니다.
ALU의 주요 구성 요소:
1. 가산기(Adder) :
- 덧셈을 수행하는 회로로, ALU의 기본적인 구성 요소입니다. 뺄셈은 2의 보수를 이용해 가산기로 처리할 수 있습니다.
2. 뺄셈기(Subtractor):
- 직접적으로 뺄셈을 수행하는 회로로, 보수법을 사용해 가산기와 함께 뺄셈을 처리할 수 있습니다. 실제로는 가산기를 활용하여 처리되는 경우가 많습니다.
3. 논리 연산기(Logical Unit):
- 논리 연산을 처리하는 회로로, 기본적으로 AND, OR, NOT, XOR 같은 논리 연산을 수행합니다.
- 이 연산기들은 논리 게이트로 구성되어 있습니다.
4. 시프트 레지스터(Shift Register):
- 데이터를 왼쪽이나 오른쪽으로 시프트(이동)하는 회로로, 곱셈과 나눗셈을 효율적으로 처리하는 데 사용됩니다.
- 좌측 시프트는 2의 배수를 곱하는 효과를 내며, 우측 시프트는 나눗셈과 같은 효과를 냅니다.
5. 곱셈기(Multiplier):
- 곱셈을 처리하는 회로로, 덧셈과 시프트 연산을 반복해 곱셈을 처리하는 방식으로 동작합니다. 일부 복잡한 ALU에는 빠른 곱셈을 처리하기 위한 별도의 곱셈기가 포함될 수 있습니다.
6. 나눗셈기(Divider):
- 나눗셈을 처리하는 회로입니다. 나눗셈도 뺄셈과 시프트 연산을 통해 처리되며, 일부 고성능 ALU에는 나눗셈을 처리하기 위한 별도의 하드웨어 회로가 포함될 수 있습니다.
7. 상태 레지스터(Flags/Condition Codes):
- 연산의 결과에 따라 조건 플래그를 설정하는 레지스터입니다. 예를 들어, 연산의 결과가 0인지, 음수인지, 오버플로우가 발생했는지 등을 기록합니다.
- 상태 레지스터는 연산의 결과에 따라 CPU가 후속 동작을 결정할 때 활용됩니다.
ALU의 기능:
- 산술 연산: 덧셈, 뺄셈, 곱셈, 나눗셈
- 논리 연산: AND, OR, NOT, XOR 등의 비트 단위 연산
- 시프트 연산: 좌우 시프트 연산으로 곱셈/나눗셈 효과를 내는 연산
- 비교 연산: 두 값의 크기를 비교해 상태 플래그를 설정하는 연산
이렇게 ALU는 다양한 논리 회로들이 결합되어 수학적 연산과 논리 연산을 수행하며, 중앙처리장치(CPU)의 필수적인 역할을 담당합니다.
5. 실제 모습
일반 계산기를 분해해 보면 https://allcalc.org/16563

회로에 그려진 선하고 배터리 빼면 별다른게 없어 보입니다만, 저기 가운데 검은 껌딱지같은 것 안에 집적 회로(IC)가 숨어 있습니다.
집적 회로(IC) 안에는 수많은 트랜지스터, 저항, 다이오드 같은 전자 소자가 포함되어 있으며, 이 소자들이 논리 연산을 처리하는 역할을 합니다.
매우 작고 정밀한 부품인데, 노출되어 있으면 손상 위험이 크기 때문에
COB(Chip on Board) 방식으로, 회로 기판에 직접 칩을 부착한 후, 그 위에 검정색 에폭시 수지를(주로 레진) 덮어 칩을 보호합니다.
레진을 뜯어내면 이런 식으로 내부에 IC가 숨어 있습니다. (라디오 시계)
https://www.kaibader.de/exposing-a-chip-on-board/
6. 자료 출처
http://ko.wikipedia.org/wiki/%EA%B3%84%EC%82%B0%EA%B8%B0
https://ko.wikipedia.org/wiki/%EB%85%BC%EB%A6%AC_%ED%9A%8C%EB%A1%9C
https://ko.wikipedia.org/wiki/%EB%B6%88_%EB%8C%80%EC%88%98
https://ko.wikipedia.org/wiki/%EA%B0%80%EC%82%B0%EA%B8%B0
댓글5
-
세상의모든계산기
ALU(Arithmetic Logic Unit)는 곱셈을 수행할 때, 모두 덧셈으로 계산하나?
3*3 같은 것은 3+3+3 으로 계산해도 문제가 없지만, 숫자가 커지면 이런 방식은 너무 비효율적입니다.
대신, ALU는 곱셈을 위한 효율적인 알고리즘을 사용하여 빠르게 계산합니다.
곱셈의 기본 원리:
ALU는 보통 이진수 곱셈(Binary Multiplication) 알고리즘을 사용하여 곱셈을 처리합니다.
이 알고리즘은 우리가 배운 문자식 곱셈과 비슷한 방식으로 작동합니다.
즉, 각 비트를 곱하고, 그 결과를 더하는 방식입니다. 이 과정은 일종의 시프트(Shift) 연산과 덧셈을 결합한 것입니다.
1234 * 1234의 계산 과정(이진수):
1. 이진수로 변환: 먼저 1234를 이진수로 변환합니다. 1234(10진수)는, 이진수로는 `10011010010`입니다.
2. 비트별 곱셈: 두 이진수`10011010010`와 `10011010010`를 곱할 때, 각 비트를 비교해 곱(AND)하고 결과를 적절히 시프트(Shift)하여 더합니다.
3. 덧셈과 시프트: 각 비트 곱셈 결과는 자리값에 맞게 왼쪽으로 시프트한 후, 그 결과를 모두 덧셈하여 최종 값을 구합니다.
이 과정에서 곱셈은 덧셈과 시프트 연산을 기반으로 하지만, 이를 1234번 더하는 것이 아니라 효율적인 비트 연산을 통해 빠르게 수행됩니다.
하드웨어적으로는?
- 곱셈기(Multiplier): ALU에는 곱셈을 빠르게 수행하는 하드웨어 곱셈기가 내장되어 있습니다. 이 곱셈기는 병렬 처리와 시프트 연산을 활용하여 곱셈을 매우 빠르게 수행합니다.
- 곱셈기는 단순히 덧셈을 반복하지 않고, 곱셈 알고리즘을 기반으로 하드웨어 수준에서 최적화된 연산을 수행합니다.
결론:
ALU는 1234를 1234번 더하는 방식으로 곱셈을 처리하지 않으며, 대신 시프트와 덧셈을 결합한 효율적인 이진 곱셈 알고리즘을 사용해 빠르게 계산합니다.
-
세상의모든계산기
계산기가 빠른 이유
숫자 계산은 순차적인 논리적 과정입니다.
2진수 각 비트를 처리(계산)하는 것은 논리 1회에 해당하며 1 클럭이 들어간다고 볼 수 있습니다.
예를 들어, 1234 × 1234의 경우:
- 논리곱: 11 클럭 사이클
- 시프트: 11 클럭 사이클
- 덧셈: 10 클럭 사이클이러한 계산을 모두 합치면 총 32 클럭 사이클이 필요합니다.
또한, 1234 + 345 - 432 ÷ 456 × 345 - √24 - 3의 경우:
- 나눗셈: 10 클럭 사이클
- 곱셈: 5 클럭 사이클
- 제곱근: 10 클럭 사이클
- 덧셈 및 뺄셈: 1 + 1 + 2 = 4 클럭 사이클따라서 이 계산에는 총 29 클럭 사이클이 소요됩니다.
일반 계산기는 제품마다 성능이 다르겠지만, 최~소 1KHz 정도는 되는 것 같습니다.
이는 대략 1초에 1,000 클럭을 처리할 수 있다는 뜻입니다.
* "1MHz 에 못미치는 수준이다"는 주장도 있는데, 거기까지는 안갈 것 같습니다. 배터리 문제 때문에요. 좀 더 찾아봐야 할 듯.
30 클럭 사이클이면 대략 0.03초 (30 mS) 가 필요합니다.
이러한 이유로 계산기가 빠른 속도로 연산을 수행할 수 있다는 점을 이해할 수 있습니다.
* 눈으로 본 정보가 뇌에 도착하는데 수십 밀리초 가 필요하다고 하죠?
눈으로 보는 순간 계산은 끝나있다고 봐도 무방하겠습니다.
-
세상의모든계산기
https://www.emc.com.tw/emc/en/Product/Product/Microcontrollers/Calculator
에서 Calculator ASIC 항목을 보면 품목이 두개 있는데
[8 Digits] EMPCD081A
https://www.emc.com.tw/emc/en/Product/Product/detail/75
https://www.emc.com.tw/upload/2019_01_14(0_0)b2/EMPCD081A.pdf

평균 200kHz (Min120 ~ Max280)
[10, 12 Digits] EM34014A
https://www.emc.com.tw/emc/en/Product/Product/detail/74
https://www.emc.com.tw/upload/2019_01_14(0_0)b2/EM34014A.pdf

평균 200kHz (Min120 ~ Max280)
주판
집적회로(IC)를 이용한 현재의 컴퓨터
세상의모든계산기 님의 최근 댓글
500! 의 십진수 근사값 확인 500! = 1.22013682599111006870123878542304692625357434280319284219241358838 × 10^(1134) (참값, 울프람 알파) 2025 10.29 관련 라이브러리 https://allcalc.org/56263 sgn(x) 내장된 부호 함수(signum function)와 달리, 이 함수의 sgn(0)은 0을 반환합니다. 2025 10.29 라이브러리로 사용할 수 있습니다. (제작자 추천) 1. mylib 폴더에 넣기 2. Actions ➡️ library ➡️ refresh libraries 실행 하기 2025 10.29 ChatGPT-5 기호(÷, /, :) 자체는 의미적으로 같은 “나눗셈”을 뜻하지만, 문맥(사람이 쓰는 수학 vs 컴퓨터/프로그래밍)에 따라 해석 우선순위가 달라질 수 있습니다. 🔹 1️⃣ 전통 수학 표기 — ÷, /, : 수학 교과서, 논문, 일반 문서 등에서는 셋 다 의미적으로 “나누기”로 간주됩니다. 즉, 48÷2(9+3), 48/2(9+3), 48:2(9+3) 은 같은 의미로 받아들여야 합니다. 모두 사람의 수학 관행적 해석이 적용되어 48 ÷ 2 × (9+3) = 288 로 처리되죠. 즉, 기호가 바뀌어도 결과는 바뀌지 않습니다. 🔹 2️⃣ 컴퓨터·프로그래밍 문맥에서 / 사용 시 컴퓨터는 “생략된 곱셈(implicit multiplication)”을 따로 구분하지 못합니다. 따라서 다음 두 식은 완전히 다르게 인식됩니다. 표현 파이썬 등에서 해석 결과 48 / 2*(9+3) ((48 / 2) * (9+3)) 288 48 / 2(9+3) ❌ 문법 오류 (생략된 곱셈 인식 불가) — 즉, 컴퓨터 언어에서는 생략된 곱셈이 허용되지 않기 때문에, /는 반드시 명시적 *와 함께 써야 합니다. 🔹 3️⃣ “:” 기호의 경우 현대 수학에서는 “비율”을 나타내는 기호로 쓰입니다. a:b = \frac{a}{b} 따라서 (27 : 3(1+2)3) 같은 표현은 모호하거나 비표준적으로 간주됩니다. 대부분의 경우 계산기로는 입력 자체가 불가능합니다. ✅ 정리 기호 의미 결과 변화 주로 쓰이는 문맥 ÷ 나누기 없음 초중등 수학, 일반 표기 / 나누기 없음 (단, 프로그래밍에서는 생략 곱 불허) 수학/컴퓨터 : 비율 (또는 나누기 의미로 혼용) 보통 계산식에서는 사용 안 함 비, 비율 표기 🔹 결론 48 ÷ 2(9+3), 48/2(9+3), 48:2(9+3) 는 “수학적 의미”로는 동일하게 81로 해석됩니다. 하지만 프로그래밍이나 수식 파서(context) 에서는 /만 유효하고, 생략된 곱은 허용되지 않으며, :는 아예 다른 의미(비율)로 인식됩니다. 2025 10.28 ChatGPT-5 💯 네, 정확히 그 지점을 짚으셨어요. 요약하면 이렇게 말할 수 있습니다: “생략된 곱하기(implicit multiplication)”는 문자에서는 강한 결합력을 인정하지만, 숫자나 괄호 사이에서는 일반 곱셈(×)과 동일한 우선순위로 취급된다. 즉, 문자에서는 더 강하게 결합, 숫자·괄호 사이에서는 그냥 ‘보통 곱셈’ 으로 본다는 것이 현대 수학 표기와 계산기의 관행적 규칙입니다. 🔹 두 경우의 구조적 차이 식 형태 실제 해석 결과 결합력 특징 ab ÷ ab 문자 붙음 ((a×b) ÷ (a×b)) 1 문자 간 결합이 강함 → 한 항으로 인식 3(1+2)3 숫자·괄호 혼합 (3 × (1+2) × 3) 27 생략된 ×는 보통 곱셈 → 좌→우 규칙 적용 🔹 왜 문자식은 결합력이 더 강한가? 기호적 표현의 안정성 (ab), (xy), (2x) 같은 표기는 수백 년 동안 “하나의 곱셈 항(term)”으로 인식되어 왔습니다. 그래서 수학자들은 이걸 암묵적으로 “괄호로 묶인 덩어리”로 봅니다. ab ÷ ab = (ab) ÷ (ab) 함수 표기와 구분 필요 예: (sinx ÷ x) 에서 sinx는 sin(x)로 묶여야 의미가 있습니다. 이런 이유로 “문자 옆에 붙은 기호나 문자”는 항상 먼저 결합되도록 하는 관행이 굳어졌습니다. 🔹 반면 숫자·괄호에서는 (3(1+2)) 는 단순히 “3 × (1+2)”의 약식 표현이고, 여기서 “생략된 곱셈”은 “명시적 곱셈”과 동일한 연산자로 간주됩니다. 따라서 27 ÷ 3(1+2)3 = 27 ÷ 3 × 3 × 3 = 81 처럼 좌→우 순서로 처리합니다. 🔹 결론 생략된 곱하기(implicit multiplication)의 결합력은 표기 맥락에 따라 다르다. 문자/기호와 함께 쓰일 때 → 강하게 결합 (하나의 항으로 인식) 숫자와 괄호 사이 → 일반 곱셈과 동일한 우선순위 (좌→우 계산) 이건 “규칙이 바뀐 것”이 아니라, 표기 문법(context) 이 달라서 ‘결합 단위(token)’이 달라진 결과라고 보는 게 가장 정확합니다. 2025 10.28