古代エジプト人の掛け算(ロシア農民の掛け算)

Ancient Egyptian multiplication – Wikipedia

ロシア農民の掛け算とその発明者 – Qiita

ロシア農民の掛け算 – 計算尺推進委員会

「なぜ(Why)」と考えると疑問は尽きないが,「どうして(How)」と考えると割と自然な成り行きで理解できる.要はビット演算というのは「ある/ない」の2値で,最も基本的な考え方なので,2進数の概念がなくても,ナチュラルにその過程は導出され得るだろう.

def rpm(x, y):
    x_b = bin(x)[2:]
    y_b = bin(y)[2:]
    res = 0
    for s in reversed(y_b):
        if s == '1':
            res += int(x_b)
        x_b = x_b + '0'
    return int(str(res), 2)


rpm(4, 1234)

4936

Pythonでやると文字列処理になるのでビット演算感ゼロだけど.

広告
カテゴリー: 未分類 パーマリンク

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中