우리는 이미 초등학교때 곱셈에 대해서 배웠을 것이다.
그럼 다음을 계산 하여 봐라.
45 X 37
거의 100%의 확률로 다음과 같이 계산 할것이다.
45
X 37
--------
315
135
---------
1665
이것으 이미 초등학교때 배우는 곱셈 방식이다.
하지만 이것말고도 곱셈의 방식은 또 있다. 이른바 a la russe알고리즘이다.
일단 두개의 정수를 첫번째 위치 두번째 위치에 써둔다. 그리고 첫번째 위치는 계속 2로 나누고 두번째 위치에 있는 것은 계속 2로 곱한다.
첫번째 위치에 있는 것이 나눗셈할때 1이 남는경우 1은 신경쓰지않고 버린다.(2로 나누기에 나머지는 1과 0만 있을 뿐이다.)
첫번째 위치에 있는 것이 홀수일경우고 2번찌 위치에 있는것을 복사해서 따로 적어둔다. 그리고 첫번째 있는 수가 결국 1이 될때까지 계속 나눗셈을 해간다.
그리고 복사해서 적어둔것을 다 더하면 곰셈이 끝난다.
/2 X2
45 37 37
22 74 .
11 148 148
5 296 296
2 592 .
1 1184 1184
-------------------------------
+ 1665
나는 처음봄
출처:
http://coolsoft2.com/749575
곱셈을 시프팅과 복사 덧셈으로 나눠놨는데 멀티플라이어 없는 계산기에서나 쓸법하군-_-
와 신기하다
근데 초고대유물이 아닌이상 ALU엔 곱셈연산유닛은 그냥 하드웨어로 있으니까 그게 더 빠를걸-_- 저런 소프트웨어적인 방법을 쓸 이유가 없어
글쓴이가 이 글 쓴 이유가 연산이 더 빠르다고 올려놓은건데, 실제론 잘 모르겄네욬
너만 첨보는거다
이 글을 일본인이 본다면 이렇게 말할거 같다
신기루
신기하다 만, 흑연아까움
10자리 수 * 10자리 수 같이 큰 수들을 곱하기 할 때는 2번째 알고리즘이 1번째 알고리즘보다 인간이 계산해도 더 편하겠네.
그러나 수능이나 학교 시험 정도에서는 큰 자리의 수를 곱하는 경우는 거의 없으니까 2번째 알고리즘은 솔까말 인간에게는 쓸모없네
혹시몰라서 빅인티저 계산에서도 쓸만할까 하고 봤는데 그것도 별루... 이거 진짜 곱셈연산기 없는 ALU에서 쓰던 거 같다 ㅋㅋㅋ