二進制補碼

  計算機只能處理2進制數據(常常是補碼!),計算機內部沒有10進制和16進制,10進制是人類處理數據的習慣,Java利用API提供的的算法(方法)實現10進制的處理。16進制是便捷的2進制書寫格式。java

  一切交給計算機處理的數據,都要轉化爲2進制。算法

  計算機不認識正負數,因此本來二進制是沒有負數的,但由於運算須要,正負二進制是人爲規定的,因此纔有了補碼(補充的碼)。eclipse

  計算機在輸入輸出的時候,依照人的習慣,利用算法實現10進制輸入輸出。spa

以4位補碼爲例:code

  1. 將高位爲1的大數,做爲負數使用;
  2. 計算時候超過4位數,多出數位自動溢出捨棄
  3. 在不超過範圍狀況下,補碼運算知足數學規則
  4. 缺點:數字有範圍,不能進行超範圍計算(例如4位補碼的範圍是-8~7,8位補碼的範圍是-128~127)
  5. 特別要注意運算範圍,否則溢出致使運算出錯

見下圖:blog

  由圖中能夠看出從上到下逐一加1,而且以粉色橫線爲鏡面,上下互爲反碼,這也是補碼取反對稱現象,由此可得出——~n=-n-1(~n:n取反)ip

  

 

0x是16進制的前綴,0是8進制的前綴。0x7fffffff是最大的16進制數,0x80000000是最小的16進制數數學

eclipse中數字的2進制和16進制不顯示高位的0。class

 

 1 package Test;
 2 
 3 import java.util.Scanner;
 4 
 5 public class Test {
 6     public static void main(String[] args) {
 7         System.out.println("請輸入要查看2進制的數字:");
 8         Scanner in = new Scanner(System.in);
 9         int n = in.nextInt();
10         System.out.println(n+"的2進製表示是:"+Integer.toBinaryString(n));
11         System.out.println(n+"的16進製表示是:"+Integer.toHexString(n));
12         System.out.println(~100);//使用公式~n=-n-1
13     }
14 }
相關文章
相關標籤/搜索