123按位取反是多少,即~123=?


 

  今天晚上學習《零基礎學Java》,看到第50頁時,發現書上一行代碼自己想不通,這行代碼意思是將123按位取反,程序運行后輸出結果是-124,即~123=-124.

  開始我個人理解是123轉換成二進制為:01111011,按位取反后為10000100,即132,與真實輸出結果-124不一致。后來我查閱相關資料,才明白原因,以下為正確計算方法:

  (1)二進制數在內存中以補碼的形式存儲,123的原碼為01111011,123的反碼為10000100,123的補碼為10000101,即123在內存中以10000101形式存儲。

  (2)10000101按位取反后為:10000101,其補碼為:10000110

  知識點:

  1>反碼的表示方法是:正數的反碼是其本身;負數的反碼是在其原碼的基礎上, 符號位不變,其余各個位取反。

  2>補碼的表示方法是:正數的補碼就是其本身;負數的補碼是在其原碼的基礎上, 符號位不變, 其余各位取反, 最后+1(即在反碼的基礎上+1)。

  

 

 

 

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM