域名 備案 沒有網(wǎng)站嗎網(wǎng)絡營銷的有哪些特點
常見的進制
常用的進制有二進制,八進制,十進制,十六進制。而我們最熟悉的是十進制,他們分別是怎么表達的呢?
定義不同的進制,寫法不同
- 二進制(Binary):
- 使用前綴?
0b
?或?0B
。 - 例如:
int binaryNumber = 0b1010;
?表示二進制的?1010
,等價于十進制的?10
。
- 使用前綴?
- 十進制(Decimal):
- 十進制數(shù)是Java中的默認數(shù)制,因此不需要前綴。
- 例如:
int decimalNumber = 10;
?表示十進制的?10
。
- 八進制(Octal):
- 使用前綴?
0
。 - 注意:這里只使用一個?
0
?作為前綴,與十六進制和二進制不同。 - 例如:
int octalNumber = 012;
?表示八進制的?12
,等價于十進制的?10
。
- 使用前綴?
- 十六進制(Hexadecimal):
- 使用前綴?
0x
?或?0X
。 - 例如:
int hexNumber = 0xA;
?表示十六進制的?A
,等價于十進制的?10
。
- 使用前綴?
public class Main {public static void main(String[] args) {// 代碼中定義的進制,無論如何在輸出都是以十進制的方式輸出// 二進制int binaryNumber = 0b1010;System.out.println("二進制 0b1010 等于十進制 " + binaryNumber);// 十進制int decimalNumber = 10;System.out.println("十進制 " + decimalNumber + " 等于十進制 " + decimalNumber); // 顯然這里輸出的是相同的數(shù)// 八進制int octalNumber = 012;System.out.println("八進制 012 等于十進制 " + octalNumber);// 十六進制int hexNumber = 0xA;System.out.println("十六進制 0xA 等于十進制 " + hexNumber);}
}
計算機底層存儲
計算機存儲數(shù)據(jù),在底層是以二進制進行存儲。他們都是以數(shù)據(jù)的補碼進行存儲,且最高位是符號位
- 正數(shù): 最高位是0
- 負數(shù):最高位是1
規(guī)定:
- 正數(shù)的補碼,反碼與原碼是一樣的,稱為三碼合一
- 負數(shù)的補碼和反碼,原碼不一樣
- 負數(shù)的原碼: 十進制轉二進制,且最高位為1
- 負數(shù)的反碼:在原碼的基礎上,最高位不變,其余取反(0->1, 1->0)
- 負數(shù)的補碼: 反碼 + 1
有了以上規(guī)則,讓我們來看幾個例子;
byte b1 = 2;
byte b2 = -2;
這兩個十進制在計算機是怎么存儲的呢?
對于:byte存儲為1個字節(jié),8個bit,
b1 正數(shù)最高位為0;2轉為二進制:10;原碼 = 反碼 = 補碼; 因此計算機存儲2 就是按照以下存儲
b2 為負數(shù),最高位是1;
進制之間的轉換
二進制轉10進制
二進制轉10進制,除開最高位為符號位,其他一次為 位數(shù) * 2的n次方
十進制轉二進制
做除法在取余數(shù)取反
其他進制之間的轉換
八進制轉二進制與二轉十
將數(shù)字拆分為單個數(shù)字,1個數(shù)字代表2進制的3位數(shù);
?十六轉二和二轉十六
將數(shù)字拆分為單個數(shù)字,1個數(shù)字代表2進制的4位數(shù)字,同上就不做案例了