二進位制:
用16進製制簡化二進位制的書寫,4位二進位制數可用一位16進製制數表示,
例如:二進位制: 1110 1111 1101
16進製制: efd
int資料型別最高為表示符號位,1為負,0為正
拿byte型別舉例,byte佔乙個位元組,8位,表示的數值範圍:-128~127
byte最大數:0111 1111 最小數:1000 0000
最大數加1,溢位,變為最小數。
計算機顯示的是資料的補碼。
使用原碼求真值。
正數的原碼和補碼一樣,負數原碼 = 補碼的反碼 + 1
計算機顯示資料時會自動隱藏高位的0
例如:
byte b = 24;
system.out.println(integer.tobinarystring(b));//11000
111000(2) = 24(10)
byte b = -14;
system.out.println(integer.tobinarystring(b));//11111111111111111111111111110010
將補碼取反:1101 (省去高位0)
補碼+1 = 1110; 這就是-14的原碼
1110(2) = 14 (10) 再加上符號就是10進製的-14.
以四位二進位制數舉例,一半為正數,一半為負數,可以看出,
0000 0001 0010 0011 0100 0101 0110 0111 (0 , 1, 2, 3, 4, 5, 6, 7)
1111 1110 1101 1100 1011 1010 1001 1000 (-1,-2,-3,-4,-5,-6,-7,-8)
與運算 & (邏輯乘法)
規則:0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
或運算| 有1為1
編碼
網路傳輸資料一般為8位,所有需要將資料拆分,拆分方式則稱為編碼。
將unicode字元 轉換為 utf-8編碼格式
其格式為:1110 ***x //result1
10xx ***x //result2
10xx ***x //result3
utf-8編碼的最後乙個位元組,將字元的最後6位切下來 拼接最後位元組的格式0x80|c&0x3f
&運算獲取最後6位,或運算拼接
將字元 中 轉換為utf-8編碼格式
//拼接第三個字元
int c = '中';
int m = 0x3f; //0011 1111
int _six = c & m;
int two_ = 0x80;
int result3 = _six|two_;
//拼接第二個字元
int ccc = c>>>6; //右移六位
int lk = ccc & m;
int result2 = lk |0x80;
//拼接第乙個字元
int c3 = c>>>12;//右移六位
int mm = 0x0f;
int c4 = c3 & mm;
int cc = 0xe0;
int result1 = c4 |cc;
驗證:byte bs = ;
string str = new string(bs,"utf-8");
system.out.println(string); //中
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
JAVA與二進位制
system.out.println 51 7 如上 的結果是 3 答案 00000000 00000000 00000000 00110011 00000000 00000000 00000000 00000111 2進製 計算機內部 只有 2進製資料。任何資訊都必須轉換為2進製,再由計算機處理。...
學習二進位制有感
二進位制,乙個曾經只是聽說過沒見過的東西,現在已經漸漸地走入了我們日常的學習生活。二進位制的學習過程既簡單又繁瑣,簡單的0和1卻能產生出無數種組合,進行各種各樣的轉換,這給初次接觸的我們帶來了不少麻煩。慢慢的,老師通過耐心的講解和一些有意思的小遊戲讓我們加深了對這些枯燥的概念的理解,其中一款csic...