JAVA中 1取反為什麼是0

時間 2021-09-10 17:18:57

1樓:uncle-lv

可以試著輸出一下 0 和 1 在計算機中的二進位制表示:

System

.out

.println

(Integer

.toBinaryString(0

));System

.out

.println

(Integer

.toBinaryString(-1

));從輸出可以看出:

0: 0000

0000

-1: 1111

1111

這是因為計算機使用的是補碼,正數的補碼和原碼相同,負數的補碼是原碼除符號位外的位取反,再加 1。

所以,實際上,-1 取反是:

1111

1111 → 0000

0000

題主的錯誤有以下兩點:

1、計算機中 -1 的二進位制表示不是原碼 1000 0001,而是補碼 1111 1111

2、取反後,符號位為 0 時,表示這是乙個正數,而正數的原碼、補碼、反碼都相同,所以不用像負數一樣再進行轉原碼的操作了。即按 1000 0001 取反後, 0111 1110 也應該表示 126,而不是 2

補碼轉換為原碼,為什麼是先取反再加1?

NaN 首先我們考慮一下負數實際上是什麼。比如8位二進位制數,8位二進位制有256種可能,所以最多可以表示256種數字。如果是無符號的情況,這樣的數字可以表示0到255。那麼256呢?255 1會是什麼情況呢?眾所周知,255的二進位制形式是1111 1111,而256的二進位制形式是1 0000 ...

1 乘 0 為什麼等於 0?

xfl 我個人想當然地認為,那是因為人們始終相信乘法交換律就是徹底的真理。首先,我得感嘆中華文化的博大精深,中國玩文字遊戲,可謂世界之最。後面的計算全部基於十進位制 先拿除法開刀 13 5 2 3 中文讀法是 十三除以五得二餘三,或者五除十三得二餘三。我對中文這樣描述的理解是 除,即除去,刪去,去掉...

x sin 1 x ,x趨近0,為什麼極限等於0?

洛倫茲變換 1 sinx 1,所以 x xsinx x,因為x趨於0時,x和x都趨於0,由夾逼定理得,它的極限為0 木木屋 x趨向於零,x就是無窮小量,sin 1 x 就在 1和1之間無限的來回徘徊,即sin 1 x 是乙個有界量,無窮小量乘以有界量還是無窮小,所以是零。 荒野孤狼 用夾擠原理,1 ...