我知道這是一個常見問題,我不知道爲什麼我有這麼多麻煩。我想行從IDL代碼轉換爲C++如何在C++中移位整數值
IDL:
for i = 0,7 do begin
b = ishfy(b,1)
print,b
endfor
我的C++代碼:
for(int i = 0; i < 7; i++)
{
b = b << 1;
cout << b;
}
我最初b爲255,我希望收到254, 252,等等。相反,我的第一個位移返回510.我假設我的問題不是在轉換之前將b轉換爲二進制形式。它是否正確?如果是這樣,我該如何解決它?
在此先感謝!
你看到什麼是預期的:你有'0b11111111',當移位1時爲'0b111111110',即510. – juanchopanza
255爲1111_1111基數2.當使用<< << 1»時,您將所有位移到左邊。所以,這有相同的行爲乘以二:1_1111_1110基數二是510基數10. –
我想你可能想'(b << 1)&0xff' –