2017-08-29 17 views
0

循環シフトを理解できません。複数の左の左シフトと操作

私がやった検索や、以下の方法を見つけましたが、入力された値が期待された結果得られません:3回シフトするとき

public static uint RotateLeft(this uint value, int count) 
{ 
    return (value << count) | (value >> (32 - count)); 
} 

211を入力するには158を与える必要があります。

+0

211何回シフトされましたか? – juharr

+0

"211を入力する"は、それが 'value'か' count'ですか?第二引数はどこですか? –

+0

シフト3回、申し訳ありません。 – SlashJ

答えて

4

問題は、コードが32ビットベースである間に期待される結果がバイトベースであることです。バイトの場合は、次のように試してください:

public static byte RotateLeft(byte value, int count) 
{ 
    return (byte)((value << count) | (value >> (8 - count))); 
} 
関連する問題