2012-10-03 2 views
2

저는 암호에 관한 기사를 읽었으며 "32 비트 컴퓨터가 실제로 512 비트 값 또는 64 비트 값으로 어떻게 연산합니까?"라고 생각했습니다.32 비트 컴퓨터는 큰 비트 수와 어떻게 작동합니까? 전의. 512 비트 정수

누구나 올바른 방향으로 나를 가리킬 수 있습니까? 어쩌면 내가 알고 싶은 것을 적절하게 표현하는 방법을 잃어 버렸을 지 모르지만 Google 검색은 이것을 알아 내는데별로 도움이되지 못했습니다.

감사합니다.

+0

한 번에 32 비트를 조작하면 .... –

+1

알고리즘은 실제로 학년 수학 계산에서 익숙합니다. 단, 알고리즘을 알지 못하는 경우는 예외입니다. 기본 10 자릿수 대신 기본 2 ** 32 단어를 사용합니다. 크 누스의 "Seminumerical Algorithms"에는 많은 변형과 분석이 포함되어 있습니다. –

답변

5

GregS's comment의 확장입니다.

은 가정하자 나는 (9 * 9 = 81까지 0 * 0 = 0에서) 모든 백 single-digit * single-digit 곱셈을 알고, 누군가가 561 * 845을 계산하는 나에게 묻습니다. 나는 일 수있다는 "미안하다. 나, 나는 내 어린 시절 교육을 기억하고 할 수있는이 :

내 알려진 범위, 또는 (캐리 포함) 부가 내에서 주어진 단계에서, 곱셈 을 수행 할 수 있습니다 만하면
 561 
     845 * 
---------- 
     2805 
    2244 
    4488 + 
========== 
    474045 

.

이제 가정하자 대신 십진수, 심볼들 각각을 상기했다 대신 32 비트 워드; 나와 대신에 우리는 32 비트 워드를 64 비트 결과에 곱하고 32 비트 워드를 더할 수있는 프로세서를 가지고 있습니다. Voila, 우리는 임의로 큰 이진 곱셈을하는 시스템을 가지고 있습니다.

0

작업은 소프트웨어에서 수행하거나 특수 하드웨어 (암호화 용)를 사용합니다. 예를 들어 라이브러리의 경우 GMPMPFR을 참조하십시오.

3

한 번에 32 비트. 반복 연산을 통해 다중 단어 산술을 허용하기 위해 캐리, 오버 플로우 등을 나타내는 플래그가 있습니다.

0

너트 쉘 (muts shell)에서 Mitch가 말한 것과 같은 종류의 비트로 비트를 조금씩 분해합니다. 프로세서를 처리하는 데 약간의 시간이 걸릴 수도 있지만, 이것이 우리가 이제이 프로세스의 속도를 높이기 위해 멀티 코어 프로세서를 사용하게 된 이유입니다. 또한 대부분의 OS가 32 비트 및 64 비트 버전과 결국 128 개로 나뉘어져 있습니다. 관심이 있으시면 어셈블리 언어 및 기계 언어에 대한 수업을 받으십시오.

2

32 비트 프로세서는 더 큰 숫자를 더 많은 숫자로 나눌 수 있습니다 하나의 32 비트 레지스터에서 연산을 수행하는 것보다 느리지 만 하나의 레지스터보다 더 큽니다. 덧셈/뺄셈의 경우, 그것은 최하위 레지스터로부터 산술 연산을 수행하고 상태 비트를 다음 중요 레지스터로 전달합니다. 곱셈/나눗셈을 사용하면 좀 더 복잡해질 수 있지만 주요 단점은 성능입니다.

자세한 내용은 http://en.wikipedia.org/wiki/Arbitrary-precision_arithmetic을 참조하십시오.

또한이 질문 : How do programming languages handle huge number arithmetic