java进制原码_Java 一一 进制、原码 反码 补码、移位操作
進制
二進制 和 十進制 相互轉換
十進制 和 十六進制 相互轉換
原碼,反碼,補碼
原碼、反碼、補碼:
在計算機內, 有符號數有三種表示法: 原碼, 反碼, 補碼. 所有的數據的運算都是采用 補碼 進行的.
注意: 正數 的原碼, 反碼, 補碼都行相同. 負數稍微復雜
原碼:
就是二進制定點表示,最高位為符號位,”0”表示正,”1”表示負.
反碼:
負數的反碼是對其原碼逐位取反,但符號位除外( 符號位 就是 最高位 ).
補碼:
負數的補碼是在其反碼的末尾 加 1.
注意:
求反碼的時候, 最高位是符號位不能改變
正數的符號位 是 0
負數的符號位 是 1
正數 5:
5的二進制數: 00000101
原碼,補碼,反碼: 00000101
負數 -5;
5的二進制數: 00000101
原碼: 10000101
反碼: 111111010
補碼: 111111011
移位操作
移位操作:
<<:>
>>: 將操作數的二進制碼整體右移指定位數, 右移之后的空 用 “符號位” 來補充
若是 正數 使用 “0” 補充
若是 負數 使用 ”1” 補充
/*
* 2的二進制:
* 00000000_00000000_00000000_00000010
* 左移3位:
* 00000_00000000_00000000_00000010000//轉十進制: 0 * 2^0 + ...+ 1 * 2^4 = 16
* 右移3位
* 00000000_00000000_00000000_00000010//轉十進制: 1 * 2^1 = 2
*/System.out.println(2 << 3); // 16
System.out.println(16 >> 3); // 2
/*
* - 16 二進制數 最高位用 1 來補充(負數最高位 用 1)
* 原碼: 10000_00000000_00000000_00000010000
* 反碼: 11111_11111111_11111111_11111101111//負數的反碼 最高位 不變
* 補碼: 11111_11111111_11111111_11111110000//負數的補碼 是在其反碼的末尾加 1
* 右移3位(在補碼的基礎上 右移3位. 右移之后的空 用 “符號位” 來補充.)
* 11111111_11111111_11111111_11111110
*/
System.out.println(-16 >> 3); // -2
總結
以上是生活随笔為你收集整理的java进制原码_Java 一一 进制、原码 反码 补码、移位操作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java生成pgp密钥对_在Javasc
- 下一篇: Java中头指针和头结点_. 2 . 【