217按位左移2為,即11011001左移2位,高位舍棄“11”,低位補齊“00”,可以得到01100100,即100,但是我算出來是868,即1101100100,此時低位補了“00”,但是高位沒有把“11”舍棄 !!!
uj5u.com熱心網友回復:
貼代碼uj5u.com熱心網友回復:
因為217,高位為1了,表示的負數。c++對于負數的移位,是未定義行為。對于負 a,a << b 的行為未定義。
對于無符號 a 和有符號的非負 a,a >> b 的值是 a/2b
的整數部分。
對于負 a,a >> b 的值是實作定義的(大多數平臺上進行算術右移,故結果保留為負)。
uj5u.com熱心網友回復:
第二點lhs<<rhs
對于內建運算子,lhs 和 rhs 必須都具有整型或無作用域列舉型別。對兩個運算元實施整型提升。
回傳型別是提升后的左運算元的型別。
uj5u.com熱心網友回復:
問題問反了,編程結果為868,但我算的是100
uj5u.com熱心網友回復:
Java里面的uj5u.com熱心網友回復:
java請出門轉java區,這里是c/c++板塊uj5u.com熱心網友回復:
java對于<<艸做,也是按整形處理的,因為整形有32位,怎么會因為你的資料是8位,而拋棄多余2位????
uj5u.com熱心網友回復:
邏輯左移和算數左移。一個棄符號位,一個不棄符號位。這僅是一個知識。樓主的具體問題是沒有分析的。
uj5u.com熱心網友回復:
我的理解是217所占的空間是2位元組或4個位元組,根據作業系統而定,假如是2個位元組,217的二進制是0000 0000 1101 1001,左移是0000 0011 0110 0100,就變成了868轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/101689.html
標籤:C++ 語言
上一篇:弱問大家:子類物件的指標為什么可以給父類的物件指標賦值?
下一篇:哪里錯了
