只使用加法,減法和偏移,我怎樣才能乘以一個給定的整數整數?Bitshift乘以任何數字
例如,我想通過17.
我知道左移是2的倍數乘以右移由2的冪除乘以一個整數,但我不知道如何推廣這一點。
那麼負數呢?轉換爲二進制補碼並執行相同的程序?
(編輯: OK,我得到了這一點,請不要介意你轉換成二進制補碼,然後你移根據由左到右,而不是從右向左數。)
現在棘手的部分出現了。我們只能使用3個操作員。
例如,60乘以我可以用這個做到:
(x << 5) + (x << 4) + (x << 3) + (x << 2)
哪裏x
是我乘以數量。但是,這是7個操作員 - 我怎麼能凝聚這個只使用3?
一般乘法不能輪班3點的操作來完成,加/減...但是,既圖17和60可在3個操作來完成。 (提示:嘗試減去60)編輯:我沒有看到這已經回答。 – Mysticial
他們提出了這個問題,所以在3個操作員中方便地工作哈哈。感謝所有的幫助。 – Adam