ここ数日間、この 1 つの問題に頭を悩ませようとしてきましたが、解決方法がわかりません。それで、ここに行きます:
基数 4 (数値の数字として 0、1、2、3) が与えられた場合、負または正の整数の基数 4 表現で超過 (-1) を見つけます。例: -6 = (-1)22 逆に、基数 4 の (-1) を超える (-1)22 = 2 * 4^0 + 2 * 4^1 + (-1) * 4^2 = 2 + 8 - 16 = 10 - 16 = -6 基数 10
27 = 2(-1)(-1) 逆に、2(-1)(-1) = (-1) * 4^0 + (-1) * 4^1 + 2 * 4^2 = -1 - 4 + 32 = 27
正の数のアルゴリズムをいくつか思いついたのですが、すべての負の数に当てはまるアルゴリズムはなかったため、ゴミ箱に入れました。
ここで何か手がかりを教えてくれる人はいますか?ありがとう!
----------------
編集:混乱を招かないように、この質問を言い換えてみます。
すべての桁から 1 を引いて得られる基数を考えてみましょう。これは基数 4 の超過 (-1) と呼ばれます。この基数では、数字 -1、0、1、2 を使用して任意の数を表すことができます。入力として任意の整数を取得し、その指定された数値の表現を出力として与えるアルゴリズム。
例:
10 進数 -6 = -1 2 2 (基数 4 の超過 (-1))。
これを確認するために、表現 -1 -1 2 を 10 進数に変換し、右端の数字から始めて、一般的な基数 n から基数 10 のアルゴリズムを使用します。
数値 = 2 * 4^0 + 2 * 4^1 + (-1) * 4^2 = 2 + 4 - 16 = -6