回覆列表
  • 1 # Vcdjn

    這兩句語句涉及到以下幾方面知識:1 int i = 0;定義一個有符號型的整型變數,初始化值為0。2 i = ~i;將i按位取反,將結果賦值給i。~符號是單目運算子,代表按位取反,結果的每位值和原始值均相反,即原本為1結果為0,原本為0,結果為1。3 計算機中的整數是用補碼儲存的,最高位為符號位。如果符號位為0則為正數,反之符號位為1代表為負數。非負數的補碼就是其本身值的二進位制值,所以i=0時,其二進位制值也是0,寫成int的32位形式就是B0000 0000 0000 0000 0000 0000 0000 0000.然後進行取反操作,由於是32個0,那麼取反結果就是32個1。B1111 1111 1111 1111 1111 1111 1111 1111。這個值就是最終i儲存的二進位制值了。可以看到最高位也就是符號位為1了,說明表示的是一個負值。對於負值,要得到其十進位制值,需要先把二進位制的值按位取反,然後加1得到負數絕對值(相反數)的二進位制碼,然後轉為10進位制,加上負號即可。把這個值取反,得到的就是原始的i的二進位制值:B0000 0000 0000 0000 0000 0000 0000 0000.再加一,得到B0000 0000 0000 0000 0000 0000 0000 0001.也就是1。加上負號,這時i的值就是-1。

  • 中秋節和大豐收的關聯?
  • 榮耀v10今年夠玩嗎?