java 原碼、反碼、補碼計算 以及 取反(~)運算
1. 原碼、反碼、補碼:
(1)在Java中,所有資料的表示方式都是以補碼形式來表示
(2)正數:原碼、反碼、補碼相同
(3)負數:符號位為1,其餘各位是對原碼取反,然後整個數加1
(4)~按位取反(反碼加1稱為補碼。)步驟就是先求出這個數(因為java存的數是補碼)的原碼,然後對原碼取反得到X,這個X就是我們要求的那個數的補碼
2. 取反(~)運算
(1)n=37 ,二進位制數就是 100101
因為在Java中,所有資料的表示方式都是以補碼形式來表示,如果沒有特別的說明,Java 中的資料型別預設為int,int資料型別的長度為4個位元組,就是32bit的意思,因此,n=100101的原碼=補碼(因為是正數,所以原=補=反)運算過程就是:
原碼:00000000 00000000 00000000 00100101 =37
~n(對n的原碼) 取反運算得: 11111111 11111111 11111111 11011010 很明顯,最高位是1,意思是取反後的數字為負數,負數的補碼是其絕對值的原碼取反,末尾再加1,因此,我們可將這個二進位制數的補碼進行還原:
首先,末尾減1得反碼:11111111 11111111 11111111 11011001
其次,將各位取反得原碼:00000000 00000000 00000000 00100110 這個就是~n的絕對值形式,|~n|=38 ,
所以,~n=-38,這個就是Java虛擬機器的運算結果
(2)n= - 4, 取反 (~-4)。注意:Java中,所有資料的表示方式都是以補碼形式
補碼:10000000 00000000 00000000 00000100 (java所有資料的表示方式都是以補碼形式,所以把-4用二進位制表現出來就是某個數的補碼,只是我們看到的是-4)
反碼:10000000 00000000 00000000 00000011
原碼:11111111 11111111 11111111 11111100
對原碼取反:00000000 00000000 00000000 00000011 (3)
因為是正數,所以補碼等於原碼等於反碼= 3,所以~-4 = 3
相關文章
- 計算機中的補碼與java取反運算計算機Java
- 從Java中的取反號‘~’看原碼,反碼,補碼Java
- 計算機原碼, 反碼,補碼的介紹計算機
- [計組] 計算機編碼方式:原碼、反碼、補碼計算機
- 深入理解計算機中的原碼、補碼、反碼計算機
- 漫談計算機組成原理(八)原碼、補碼、反碼計算機
- 計算機二進位制中的原碼,反碼,補碼計算機
- Java 原碼 反碼 補碼Java
- Java - 5 原碼、反碼、補碼Java
- 原碼 補碼 反碼
- java中與運算,或運算,異或運算,取反運算Java
- Java中Short型別轉換為Int型別是如何計算的?原碼、反碼、補碼是什麼?Java型別
- 原碼, 反碼, 補碼 詳解
- 關於原碼,反碼,補碼
- 徹底理解原碼、補碼、反碼
- 原碼,反碼,補碼相互轉換
- 為什麼計算機採用補碼進行運算?計算機
- Java 原始碼,反碼和補碼Java原始碼
- 原碼反碼補碼的相關理解
- 動手動腦——原碼,反碼,補碼
- 計算機補碼儲存計算機
- 按位取反運計算方法
- 計算機原理基礎-原反補計算機
- 理解二進位制原碼、反碼、補碼
- 二進位制的原碼、反碼、補碼
- 痞子衡嵌入式:不可不知的計算機原理知識(1)- 整數表示(原碼/反碼/補碼)計算機
- 二進位制原碼、反碼、補碼詳解
- 計算機組成原理--浮點數-原碼補碼錶示範圍計算機
- 原始碼補碼反碼原始碼
- 原碼、反碼、補碼及移碼的作用與區別
- 線上原碼,反碼,補碼的計算工具--支援正數負數輸入以及不同位數的二進位制輸出
- 計算機為什麼要用補碼計算機
- 從原碼,反碼,補碼的設計理念來深入理解其原理
- 原始碼、反碼和補碼原始碼
- ~ 按位取反運算解析
- java 移位運算子,取反運算子 >> >> ~ , java 負數補碼存放規則等同於機器儲存Java
- 補碼、反碼、浮點數
- 程式碼·--四則運算的主要核心程式碼