二進位制基本操作

2021-10-01 20:22:27 字數 1509 閱讀 5163

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,但這裡...