java二進位制正數和負數取反
“反碼”,“取反”,“按位取反(~)”,這3個概念是不一樣的。
取反:0變1,1變0
反碼:正數的反碼是其本身,對於負數其符號位不變其它各位取反(0變1,1變0)
按位取反(~): 這將是下面要討論的。
要弄懂這個運算子的計算方法,首先必須明白二進位制數在記憶體中的存放形式,二進位制數在記憶體中是以補碼的形式存放的。
另外正數和負數的補碼不一樣,正數的補碼、反碼都是其本身,負數的反碼是符號位不變,其餘位取反,補碼是反碼加1,即:
正數11:
原碼:00001011
補碼:00001011
反碼:00001011
負數-12
原碼:11111100
反碼:11110011
補碼:11110100
對正數11按位取反
原碼: 00001011
補碼: 00001011
反碼: 00001011
對補碼取反: 11110100
減1得反碼: 11110011
反碼取反: 11111100
對負數-12按位取反
原碼: 11111100
反碼: 11110011
補碼: 11110100
對補碼取反: 00001011
對正數取反的口訣:補碼取反減1取反
對負數取反的口訣:原碼取反加1取反
規律:正數的取反等於正數加1取負 例如11的取反等於-12
負數的取反等於負數加1取正 例如-12的取反等於11
取反:0變1,1變0
反碼:正數的反碼是其本身,對於負數其符號位不變其它各位取反(0變1,1變0)
按位取反(~): 這將是下面要討論的。
要弄懂這個運算子的計算方法,首先必須明白二進位制數在記憶體中的存放形式,二進位制數在記憶體中是以補碼的形式存放的。
另外正數和負數的補碼不一樣,正數的補碼、反碼都是其本身,負數的反碼是符號位不變,其餘位取反,補碼是反碼加1,即:
正數11:
原碼:00001011
補碼:00001011
反碼:00001011
負數-12
原碼:11111100
反碼:11110011
補碼:11110100
對正數11按位取反
原碼: 00001011
補碼: 00001011
反碼: 00001011
對補碼取反: 11110100
減1得反碼: 11110011
反碼取反: 11111100
對負數-12按位取反
原碼: 11111100
反碼: 11110011
補碼: 11110100
對補碼取反: 00001011
對正數取反的口訣:補碼取反減1取反
對負數取反的口訣:原碼取反加1取反
規律:正數的取反等於正數加1取負 例如11的取反等於-12
負數的取反等於負數加1取正 例如-12的取反等於11
相關文章
- 二進位制中為什麼負數是正數取反再加一
- 負數的二進位制數問題
- 負數補碼(16進位制轉10進位制的負數)
- Java 16進位制字串 取反Java字串
- Java中關於十進位制數取反問題解決Java
- 對十進位制數字的按位輸出,取反,並求其位數
- 知多一點二進位制中的負數
- PHP負數轉16進位制再轉到10進位制的正確姿勢PHP
- 驗證二進位制數字正規表示式
- javascript十進位制數字和二進位制相互轉換JavaScript
- C++輸入十進位制數,輸出對應二進位制數、十六進位制數C++
- 遞迴函式實現十進位制正整數轉換為二進位制,八進位制,十六進位制遞迴函式
- 二進位制取反
- 負數的二進位制表示方法
- 查詢數N二進位制中1的個數(JS版 和 Java版)JSJava
- 八進位制,十六進位制和浮點數
- JavaScript 二進位制數字轉換為十進位制JavaScript
- 整數轉化成八進位制、十六進位制、二進位制,以及轉回
- 二進位制小數和IEEE浮點標準
- 一看就懂二進位制、八進位制、十六進位制數轉換十進位制
- [譯]ES6新特性:八進位制和二進位制整數字面量
- 二進位制中1的個數
- 1417 二進位制數的大小
- 線上原碼,反碼,補碼的計算工具--支援正數負數輸入以及不同位數的二進位制輸出
- 二進位制漏洞挖掘之整數溢位
- ORACLE使用函式對二進位制、十進位制、十六進位制數互相轉換Oracle函式
- 十六進位制數轉十進位制
- 進位制詳解:二進位制、八進位制和十六進位制
- 用C#實現二進位制的減法(包括二進位制小數)C#
- 有趣的二進位制3—浮點數
- 牛客網 二進位制數(進位制轉換、北郵機試)
- 教你如何進行數倉字串、二進位制、十六進位制互轉字串
- 數字邏輯練習題-(二進位制/16進位制模擬)
- 位運算--求一個 數二進位制中1的個數
- java中二進位制、八進位制、十進位制、十六進位制的轉換Java
- 在c語言中輸出8進位制數,16進位制數C語言
- 根據數字二進位制下 1 的數目排序排序
- 位運算(一):二進位制中1的個數