1

ビット単位のシフト(または回転、循環)操作の場合、通常は演算子があります。たとえば、そのうちの2つを意味します。

x << n
x >> n

ビット単位のまたはシフト用。xn

単一の関数を定義したい

bitshift(x, n)

その前に、 nのどちらのシフトを使用するか、つまり各シフト(または回転)方向の「符号」を決定する必要があります。

そのための定義や慣習はありますか?

(この質問は符号付き/符号なしタイプとは関係がないことに注意してください)

更新

また、多少関連しているかもしれませんが、この関数の実装の詳細は求めていません。

ashのようなscheme/lispのような言語にも同様の関数があり、正の方向に左シフトしますn

4

2 に答える 2

1

k桁シフトすることは、 2 ^ -kを掛けることに等しく、にシフトすることは2 ^ kを掛けることに等しいので、それはあなたにヒントを与えるはずだと思います。

注:私がこの見方で主張する理由は、乗算を除算よりもある意味でより基本的な演算と見なすのが一般的であるということですが、逆に議論することもできます。

于 2012-11-14T14:52:43.047 に答える
-1

引数として負の数を使用できます

例えば

x << n

したがって、yuoが2つの位置を左シフトする場合は、n = 2を渡し、2つの位置を右シフトする場合は、n=-2を渡します。

于 2012-11-14T15:00:16.467 に答える