c 左右移問題

Q: printf("%x\n",-12 >> 2 ); 的輸出結果是: 
A) ffffffffd B) 3ffffffd C)00000003 D)00100003 
A:%x 控制符表示將整數按照 16 進制輸出,這裏需要注意右移的時候會保持符號位不變,即正
數右移在最高位補 0,負數右移是在最高位補 1,這點與左移不同(左移不管正負都補 0)。-12
等於二進制的 1111…0100,右移兩位變成 1111…1101 也就是 0xffffffffd 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章