-1
#include <iostream>
int main()
{
using namespace std;
int number, result;
cout << "Enter a number: ";
cin >> number;
result = number << 1;
cout << "Result after bitshifting: " << result << endl;
}
如果用戶輸入12
,則程序輸出24
。在C++中移位二進制數字
在二進制表示中,12
是0b1100
。但是,程序打印的結果是十進制的24
,而不是8
(0b1000
)。
爲什麼會發生這種情況?我怎樣才能得到我除了的結果?
請閱讀文檔,瞭解如何在stackoverflow上發佈問題。 – user3286661
您可以使用std :: bitset輕鬆處理位級操作。 – seccpur
「int」至少爲16位(具體而言,它必須足夠大以保持範圍爲-32,767..32,767 \ [signed]或0..65,535 \ [unsigned \]的任何整數,這需要最小值的16位),但可能更多(通常,但不總是32位)。因此,在標準平臺上移動的數字通常不是「0b1100」,而是「0b0000000000001100」。如果您想將數字視爲4位數的二進制數,您應該使用std :: bitset來爲您提供更好的控制,正如@seccpur上面所說的,或者是一個掩碼,正如答案指定和說明的那樣。 –