JAVA按位取反運算

2021-08-28 13:42:12 字數 852 閱讀 1014

按位取反是對補碼進行運算,當運算完後,再將補碼變回原碼。

這個符號為按位取反運算子。按位取反的運算規則為0變成1,1變成0. [0->1,1->0]

有這麼乙個題:1.求~9的結果是什麼

解:9的二進位制數表示 0000 1001

9的原碼 0000 1001

9的反碼 0000 1001

9的補碼 0000 1001

按位取反操作 1111 0110

變為原碼先減一 1111 0101

再取反 1000 1010 (-10)

2.求~-9的結果

-9的二進位制數表示 1000 1001

-9的原碼 1000 1001

-9的反碼 1111 0110

-9的補碼 1111 0111

按位取反操作 0000 1000

變為原碼 0000 1000 (8) 因為正數的補碼、反碼、原碼都是乙個樣。

假如9的型別是char型,char型別佔乙個位元組,乙個位元組等於八位二進位制數,所以它的資料寬度為八位二進位制數(0000 0000)。最高位,也就是最左邊的0為符號位:0表示正數,1表示負數。

9用二進位制數儲存在記憶體中為:0000 1001 (原碼)這就是原碼

而9為正數,它的原碼、反碼、補碼都是同乙個,都是 0000 1001

按位取反時,需要對所有的二進位制數取反。 按位取反後變成 1111 0110 此時的二進位制數為補碼,而且是負數(因為最高位為1,表示為負數),就需要將其變為原碼,補碼變為原碼,怎麼變呢,首先先減1,此時變為 1111 0101,然後再變為原碼(變為原碼時,符號位不變)1000 1010(原碼),此時的原碼就是這個,它就是-10.所以~9=-10.

按位取反運算解析

今天我在看簡明python指南的時候,看到其中乙個計算機計算的問題,它是這樣描述的 x的按位取反結果為 x 1 5 輸出 6。有關本例的更多細節可以參閱 看到這兒我就疑惑了,之前在大學中學習的計算機基礎課程又還給教材了,hhh 無奈,我只好取網上搜尋解析的答案,而網上的解釋說得不太讓人明白,自己結合...

python 中按原碼取反 按位取反

在python中,按位運算的結果與c c 中位運算結果不同,原因主要是c c 是按原碼來取反。而在python中,取反的運算的流程是這樣的 先獲得其二進位制 原碼 進行取反操作。將第一步的結果,當作補碼。求這個補碼的原碼,這個原碼就是輸出的結果。補 碼求原碼的過程,先減1,再取反。由於是這樣的邏輯,...

按位取反符

二進位制數在記憶體中以補碼的形式儲存。按位取反 二進位制每一位取反,0變1,1變0。9的計算步驟 轉二進位制 0 1001 計算補碼 0 1001 按位取反 1 0110 轉為原碼 按位取反 1 1001 末位加一 1 1010 符號位為1是負數,即 10 var x 10 在計算機中乙個整型數4位...