二進位制操作總結

2021-07-23 15:47:16 字數 931 閱讀 4997

對於二進位制我相信大部分讀者剛開始接觸一定是一臉蒙蔽,當初我也是,但是通過長時間的刷題,二進位制各種各樣的操作都有了一些接觸,我通過將每次刷題中有關於二進位制的操作全都總結起來,今天在學樹狀陣列時發現總結的還是有一點了,於是打算分享一下,畢竟這個神奇的二進位制還是挺讓人頭疼的。

c/c++我知道的部分常用的位運算主要如下幾個:

a<<1左移運算,二進位制的11(十進位制為3),操作後為110(十進位制為6),相當於十進位制乘2

a<<2相當於十進位制乘以4

x=1x<<1等於x*2(線段樹可以運用到)

x<<1|1等於x*2+1(線段樹中可以運用)

a>>1右移運算,二進位制的111和110,操作後都為11,相當於除2

>> 右移運算相當於整數除法10>>2 = 10 / 4 = 2

a&b與運算,二進位制的100與上110,操作後為100,也就是按位與

1 1=1

1 0=0

0 1=0

0 0=0

& 按位與運算 兩個位都為1時,結果才為1

a|b或運算,二進位制的100或上110,操作後為110,也就是按位或

1 1 =1

0 1=1

1 0 =1

0 0 =0

| 按位或運算 兩個位都為0時,結果才為0

a^b異或運算,二進位制的100異或110,操作後為010,也就是按位異或

1 1=0

0 1=1

1 0=1

0 0=0

^ 按位異或運算 兩個位相同為0,相異為1

奇數異或1,為奇數減1,

偶數異或1,為偶數減1

~ 按位取反運算 0變1,1變0

其實這些操作網上大部分都可以搜尋到,只是大多數都是太零散了。

二進位制操作

關於二進位制操作很常見,很多筆試面試題中也有涉及,本篇主要圍繞二進位制翻轉,二進位制最高位判定和給定整數的二進位制輸出來 靈活使用二進位制的 操作。一 給定整數的二進位制翻轉 思路 可以考慮逐次翻轉得到最終的翻轉結果,具體做法,首先將所有二進位制位奇偶位逐個翻轉,然後以兩位為一對 作為整體 奇偶對逐...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

二進位制檔案操作

無關資料區 jpg資料區 無關資料區 jpg資料區 無關資料區 jpg資料區 現想把這些jpg資料從該檔案中讀出來,生成乙個個單獨的檔案,該如何做呢?幫你寫了個程式,測試了只含有乙個資訊的檔案 呼叫 void test fp.close 思路是,先得到ff的值,然後再判斷下一位是否是0xd8,但這裡...