ビット単位の数値(例:10101111000010 ...)、30桁の長さです。私はそれが30桁のままので、それを周りにシフトする巧みな方法をしたいが、それは3シフトしているが、トップ3は、その後、下部に置かれ、それはビット単位でのシフト
abcdefgh.....wxyz
とします。
defgh.....wxyzabc
すべてが3つ上にシフトされますが、上位3桁は右に置かれます。
どのようにこれをきれいに行うことができますか。
はまた、私は逆の操作を必要とするので、私はabcdefgh....wxyz
で始まる場合には、これは、すべての30桁のエリアで行われている他の方法
xyzabcdefgh....w
をシフトします。 30桁の範囲外のすべてのビットは0のままです。
これはすべて、JavaScriptが52,53ビットまでの数字を信頼できるだけ認識するという点で一目瞭然です。リンクについて
var digits = 30;
var shift = 3;
var value = 167596277;
var shiftedValue = (value >> shift) | (value & (Math.pow(2, shift)-1)) << (digits - shift);
言語に応じて「バレル/サーキュラーシフター」を作成しようとしていますが、これは重複している可能性があります* C++:* http://stackoverflow.com/questions/25799215/bitwise-rotation-circular-shiftと別のhttp ://stackoverflow.com/questions/776508/best-practices-for-circular-shift-rotate-operations-in-c * java * http://stackoverflow.com/questions/5844084/java-circular-shift-using -bitwise-operations * javascript * http://codereview.stackexchange.com/questions/41006/rotating-array-members – andrew
これは "左回転"と "右回転"と呼ばれています –