我正在第一次使用bitshift,並且遇到了意想不到的結果。錯位結果
我聲明瞭偏移量如下:
byte p_size = 0;
if (ver == 0x12 || ver == 0x13)
p_size = 20;
else
p_size = 40;
要移位的聲明爲
int t_size = rinput.ReadInt32();
和值最後我使用的代碼轉移:
int temp = t_size >> p_size << p_size;
假設t_size = 0x20 00385E和p_size = 20。如預期的那樣,temp = 0x20000000。
現在如果t_size = 0x40001014且p_size = 40,則temp = 0x40001000而不是0x40000000。我使用按位計算器「手動」計算出來的,它與0x40000000的預期結果相匹配。
這可能是一個愚蠢的疏忽我的名義,但我不明白什麼會導致奇怪的結果p_size = 40 ...任何意見表示讚賞!
你有什麼期待*從*移32位,40位左? –