1、位或 : |=
兩個二進位制數,對應位置都為0時,為0,否則為1
/**
* 按位或,對應位置都為0,則為0,否則為1
*/public static void fisrtoperation()
2、位與:&=
兩個二進位制數,對應位都為1時,為1,否則為0
/**
* 按位與,對應位置都為1,則為1,否則為0
*/public static void secondoperation()
3、異或:^=
兩個二進位制數,對應位置相同為0,不同為1
/**
* 異或,對應位置相同為0,不同為1
*/public static void thirdopreation()
4、左移 <<
/**
* 左移n位,右邊補0
*/public static void fourthopreation()
5、右移 >>
/**
* 右移n位,左邊補0
*/public static void fifthopreation()
6、無符號右移 >>>
/**
* 無符號右移,向右位移指定位數,左邊補0
*/public static void sisthoperation()
7、取反 ~ 按位非
/**
* 取反
*/public static void fourthopreation()
負數(乙個位元組為例)
1 的二進位制 0000 0001
-1的二進位制 1000 0001
最高位為符號位,0為正數,1為負數
正數的反碼,補碼都和其原始碼相同
負數的反碼,除符號位以外取反
-1的反碼 1111 1110
補碼為反碼加一 1111 1111
二進位制只有加法,要作減法可將減數當作負數
取其補碼,與被減數作加法(加法都是補碼操作,正數相加,原始碼就是其補碼)
例 29 -73
29的補碼 0001 1101
-73的原始碼 1100 1001
取反 1011 0110
加一1011 0111 這是-73的補碼
補碼相加得 1101 0100 ,這是結果的補碼,要得到原始碼,即補碼轉原始碼
補碼轉原始碼,取反 ,加一既可以得到原始碼
1101 0100 取反得 :1010 1011 再加一得 1010 1100 轉成10進製為 -44
同理 73 -29
73原始碼 0100 1001
-29 原始碼 1001 1101 取反得 1110 0010 再加一得 1110 0011 為補碼
補碼相加:0010 1100 得到為正數,補碼即為原始碼 值44
二進位制操作
關於二進位制操作很常見,很多筆試面試題中也有涉及,本篇主要圍繞二進位制翻轉,二進位制最高位判定和給定整數的二進位制輸出來 靈活使用二進位制的 操作。一 給定整數的二進位制翻轉 思路 可以考慮逐次翻轉得到最終的翻轉結果,具體做法,首先將所有二進位制位奇偶位逐個翻轉,然後以兩位為一對 作為整體 奇偶對逐...
二進位制 二進位制起源
現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...
二進位制檔案操作
無關資料區 jpg資料區 無關資料區 jpg資料區 無關資料區 jpg資料區 現想把這些jpg資料從該檔案中讀出來,生成乙個個單獨的檔案,該如何做呢?幫你寫了個程式,測試了只含有乙個資訊的檔案 呼叫 void test fp.close 思路是,先得到ff的值,然後再判斷下一位是否是0xd8,但這裡...