2014-09-29 32 views
0

我有一個非常簡單和短小的問題。C中的按位操作數簡單問題

我們有這樣的代碼

此功能打印任何無符號數的二進制值,但反轉。意思是如果你插入5,那麼它將打印101,接着是29個零。

現在的問題是,如果我們用displayMask = 1代替displayMask = 1 << 31 << 1(其中// 1注),輸出是什麼?

正確答案是,無論您插入什麼值,它都會打印32個零。但我不明白爲什麼。

如果我們寫displayMask = 1 << 31 << 1然後在一開始是000...1,然後我們旋轉31次,所以現在是100...0,然後我們再次旋轉,使1返回到開始和我們再次得到000...1。我的邏輯有什麼問題?

+0

這裏沒有旋轉 – 2014-09-29 12:05:36

+0

<<是要旋轉左邊沒有? – 2014-09-29 12:06:48

+0

沒有。這是一個輪班操作員。 – 2014-09-29 12:07:32

回答

2

<<不是位旋轉,而是位移。因此100...0 << 1是0,而不是1.