문제

Wikipedia에서 : 푸리에 디비전.

다음은 동일한 스크린 샷입니다.alt text (완전 해상도에서 봅니다)

이 알고리즘의 논리는 무엇입니까?

나는 그것이 매우 많은 숫자를 나눌 수 있다는 것을 알고 있지만 정확히 어떻게 작동합니까?

도움이 되었습니까?

해결책

이것은 긴 구분 알고리즘의 영리한 변환 인 것으로 보입니다. 영리한 부품은 첫 번째 "숫자"A1에 분할 작업 만 사용하는 것 같습니다. 다음 단계에서 다음 단계에서 적용하여 다른 A (x)를 사용할 필요가 없습니다. 임시 나머지의 제품 (부분 지수에 대한).

이것은 유효하게 수행 할 수 있고 항상 작동한다는 것은 아마도 "숫자"(기본 100,이 경우)가 실제 숫자가 아니며 기본보다 더 큰 값을 합법적으로 가정 할 수 있다는 사실 때문일 것입니다 (즉, 100 이상 ) 그리고 심지어 0보다 작습니다. 이것은 예를 들어, 부분적 지수가 생성 될 때까지 제수 (a (x> 1))의 적용을 연기하는 것과 같이 각 "숫자"를 연산에 적용하는 타이밍에 더 큰 유연성을 허용합니다. A (1)에 의한 Prior Step 's Division을 사용하면 부서 작업이 아닌 제품 뺄셈으로 적용 할 수 있습니다.

다른 팁

매우 영리한 알고리즘입니다. 나는 당신이 존재한다는 경우에도 Ol 'JF가 어떻게 HLD를 얻었는지 상상할 수 없다. 제 생각에 그는 자신이 디비전 론과 함께 사용하고있는 방법을 공식화했습니다. 그는 디지털 계산기 이전에 나이에 수많은 계산을 수행했을 것입니다.

표준 장거리 디비전 알고리즘의 시작에서 방법의 개요를 모호하게 볼 수 있다는 것은 사실이지만 이것이 유일한 단서입니다. 이 재발을 보지 않고 길고 열심히 검색 할 수 있습니다. 관련된 숫자가 너무 많아서 관계를보고 혼란스러워합니다.

표준 곱셈 알고리즘에서 데이터의 흐름을 연구함으로써 얻을 수있는 또 다른 직관이 있습니다. 컴퓨터 하드웨어로 작성하면 8 비트 곱하기 장치의 제곱 배열이 바닥과 오른쪽을 따라 2 개의 32 비트 숫자가 배열되어 데이터를 위와 왼쪽으로 이동하여 64 비트 답변으로 배열. 가장 왼쪽 가장 왼쪽 유닛은 멀티 플리 랜드의 상단 숫자를 사용하여 제품의 상위 2 개 (8 비트) 숫자를 제공하고 배열의 나머지 부분에서 오른쪽으로 운반합니다. 확인? 글쎄, 배열이 상단 가장자리를 따라 64 비트 구분을 입력하고 배열의 오른쪽 가장자리를 따라 32 비트 디바이저를 입력하는 것으로 반대로 작동한다고 상상해보십시오. 그런 다음 바닥 가장자리를 따라 32 비트 몫을 출력합니다 (나머지도 생성해야합니다. MO에 대한 잊어 버리십시오). 이제 배열의 최상위 왼쪽 단위는 배당 상단에서 배당의 상단 2 자리를 배열의 상단에서, 배열의 오른쪽에서 제수의 상단 자리 인 것을 가져오고, 몫의 상단 자리를 아래쪽으로 내려줍니다. 배열 (및 하단)과 나머지는 오른쪽으로 배열로 들어갑니다.

아휴! 그것은 단지 첫 번째 자리 출력을위한 것이 었습니다. 그것은 시작일뿐입니다. 푸리에의 천재 리버스로 실행되는 곱하기 배열 (지금 디비전 배열을 호출 할 수 있음).

물론 컴퓨터 ALU에서 마이크로 코드가 필요하지 않은 하드웨어로 분할을 할 수있는 방법입니다.

적어도, 나는이 방법이 수십억 개의 트랜지스터를 위해 마이크로 코드를 피한 곳에서 사용된다고 가정합니다. 나는 최신 CPU의 내부에 자부심이 없지만 타는 트랜지스터가 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top