我正嘗試在C++中使用位數組數據結構。這是簡單的好奇心,但我應該怎麼解釋:爲什麼移位運算符似乎循環64位整數?
uint64_t a = 1;
uint64_t b = a << 1;
cout << (a == (a << 64)) << endl; // get 1
cout << (a == (b << 63)) << endl; // get 0
似乎是一個< < x是環時x >= 64
,但墊用零時x < 64
。我錯了嗎 ?
如果不是,那麼解釋是什麼?我認爲64位整數不是自然循環的。
你能解決這個問題的另一半,'(a << 1)<< 63'的行爲嗎? –
@Robᵩ沒有什麼可以解釋的:這是完美的預期。我所理解的問題的精神在於:爲什麼在一次操作中將64位移位與在兩位操作中不同?_ – YSC