<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 位操作符(Bitwise)

          共 3173字,需瀏覽 7分鐘

           ·

          2020-12-12 14:06




          什么是Python中的按位運算符?


          按位運算符用于對二進(jìn)制模式(1和0)執(zhí)行操作。當(dāng)您在屏幕上執(zhí)行2 + 3的整數(shù)運算時,計算機將以二進(jìn)制形式讀取它-2表示為10,而3表示為11以二進(jìn)制格式。因此,您的計算將看起來像10 + 11 = 101

          按位運算符乍一看可能令人生畏,因為它們將所有內(nèi)容都轉(zhuǎn)換為位,并且我們不習(xí)慣于1和0。但是,一旦您了解了它們,就可以很容易地對其進(jìn)行操作。接下來,讓我們看一個例子

          3 x 2 = 6如果您以二進(jìn)制格式執(zhí)行相同的操作

          011 x 10 = 110

          如果您注意到,當(dāng)我們將某物乘以2時,我們只需要向左移動一個。因此,011將變?yōu)?10。

          同樣,0010將變?yōu)?100?,F(xiàn)在您知道了,您能看到乘以2有多么容易嗎?如果我們除以2,會有任何猜測嗎?好吧,你猜對了,而不是左移,我們將有右移。因此,使對位進(jìn)行這些操作的運算符稱為按位運算符。隨后,我們將在本教程的后半部分詳細(xì)了解這些左移和右移。

          在繼續(xù)進(jìn)行之前,讓我們找出為什么按位運算符必不可少的原因。此外,我們還將理解為什么我們需要學(xué)習(xí)它們。


          按位運算符的重要性

          現(xiàn)在,您會想知道是否需要進(jìn)行按位運算。到目前為止,算術(shù)運算運行良好。促使您使用按位運算符的一些原因是:

          執(zhí)行速度:到目前為止,我們已經(jīng)知道,計算機(準(zhǔn)確地說是編譯器)會將所有內(nèi)容更改為1和0。那么,為什么不減輕系統(tǒng)負(fù)擔(dān)呢?由于我們現(xiàn)在擁有高級處理器,因此您將不會在常規(guī)操作中看到這種差異。但是,如果您正在處理嵌入式系統(tǒng)程序,這將變得很重要。

          操作位:很多時候,在嵌入式系統(tǒng)上工作時,您需要操作某些位。

          例如,在序列111011中,如果您想知道具有0的位,則可以使用按位運算符(我們將在稍后介紹如何實現(xiàn))進(jìn)行操作。

          錯誤檢查:在錯誤檢查中廣泛使用按位運算符。如果將某些位發(fā)送到另一臺服務(wù)器上的另一臺計算機,則容易出錯。隨后,您可以使用按位運算符識別它們。這對于嵌入式系統(tǒng)很重要,而python是最重要的選擇之一。

          到現(xiàn)在為止,您已經(jīng)對我們?yōu)槭裁葱枰次贿\算符有了很好的了解。隨后,讓我們繼續(xù)逐位運算符的類型。


          不同的Python按位運算符

          Python提供了一些有用的運算符來執(zhí)行按位運算。隨后,讓我們詳細(xì)了解這些。


          Python中的 AND按位運算符

          &(AND)運算符用于執(zhí)行兩位之間的AND。此外,AND的簡單規(guī)則是,如果所考慮的兩個位均為1,則答案為1,否則為0。

          1&1 = 1

          1&0 = 0

          0&0 = 0

          0&1 = 0

          現(xiàn)在,您可以嘗試11和01嗎?希望您得到的答案是01。

          此外,我們在前面討論了如何查找哪個位的值為0。這是使用AND操作完成的。

          如果您將一個數(shù)字與11111111(現(xiàn)在為1個字節(jié))進(jìn)行與運算,如果結(jié)果位為0,則該位置會發(fā)生錯誤。

          在下面的計算中,我們在Python中使用&按位運算符對100和101進(jìn)行運算。您已經(jīng)知道代表一個二進(jìn)制數(shù),我們給它加上0b前綴。

          因此,您可以直接在編輯器(本機或云)中編寫以下語句,然后運行以獲取輸出。如果您熟悉本機IDE,則可以下載PyCharm,否則也可以使用基于云的編輯器Repl。隨后,在本文中,我們將使用Rep.it

          在編輯器中執(zhí)行以下代碼:

          打印(0b100&0b101)

          注意:100是二進(jìn)制格式的4,而101是5。此外,前綴0b表示我們引用的是二進(jìn)制值,而不是十進(jìn)制的100和101。

          正如預(yù)期的那樣,我們得到的結(jié)果為4。您必須注意,即使我們以二進(jìn)制形式執(zhí)行計算,結(jié)果仍然以十進(jìn)制表示。此外,這是編程語言中的默認(rèn)行為。此外,如果沒有顯式引用關(guān)鍵字,結(jié)果將以十進(jìn)制表示。

          正如我們引用0b表示輸入中的二進(jìn)制一樣,要獲取二進(jìn)制輸出,我們需要提及“ bin ”關(guān)鍵字。

          隨后,執(zhí)行以下命令以獲取相同的二進(jìn)制結(jié)果:

          打?。╞in(0b100&0b101))

          這將帶來以下結(jié)果:

          更多示例:

          12和14 = 1100和1110 = 1100 = 12

          23&15 = 10111&01111 = 00111 = 7

          10&12 = 1010&1100 = 1000 = 8


          ?OR? Python中的按位運算符

          | (OR)運算符用于對兩位執(zhí)行“或”運算。此外,OR的簡單規(guī)則是,當(dāng)且僅當(dāng)所考慮的兩個位均為0時,結(jié)果位才為0,否則結(jié)果為1。

          1 | 1 = 1

          1 | 0 = 1

          0 | 1 = 1

          0 | 0 = 0

          在下面的示例中,我們將數(shù)字5(101)與4(100)進(jìn)行運算,并期望答案為101(5),它只是具有0的中間位。

          不出所料,答案5 | 4是5。

          更多示例:

          12 | 14 = 1100 | 1110 = 1110 = 14

          23 | 15 = 10111 | 01111 = 11111 = 31

          10 | 12 = 1010 | 1100 = 1110 = 14


          NOTPython按位運算符

          ?(NOT)運算符是一個非常簡單的運算符,其作用與名稱相同。此外,它將位從0翻轉(zhuǎn)為1,從1翻轉(zhuǎn)為0。但是在像Python這樣的編程中使用時,此運算符用于返回number的補碼。

          因此,?10 = -11而不是01。此外,必須具有1的補碼和2的補碼的先驗知識,才能在這里理解此運算符的作用。

          要理解這個概念,您應(yīng)該知道python返回數(shù)字的2的補碼。該數(shù)字的2的補數(shù)是?(num + 1)。

          因此,?10返回為?(10 +1)。這就是您所需要知道的。只要記住快捷方式?(num + 1)

          在編輯器中執(zhí)行以下代碼,以驗證輸出未進(jìn)行24(11000)操作

          打?。ú皇牵?b11000))

          答案是預(yù)期的-25。

          更多示例:

          ?13(0b01101)= -14

          ?16(0b010000)= -17

          ?31(0b011111)= -32


          XOR Python按位運算符

          ^(XOR)運算符用于對兩個正在運算的位進(jìn)行XOR。XOR操作非常簡單。如果兩個位相同,則結(jié)果位為0,否則為1。

          1 ^ 1 = 0

          1 ^ 0 = 1

          0 ^ 1 = 1

          0 ^ 0 = 0

          因此1010 ^ 1011將產(chǎn)生0001。

          下面通過執(zhí)行以下幾行來演示相同的內(nèi)容:

          打?。?b1010 ^ 0b1011)

          XOR運算符在計算機科學(xué)和嵌入式系統(tǒng)領(lǐng)域中非常有用。它在邏輯計算中被廣泛使用,以使過程更快。例如,如您在上面看到的,對它們執(zhí)行XOR時10和11的結(jié)果為1。因此,如果我想找出兩個數(shù)字是否連續(xù),可以對它們進(jìn)行異或運算,然后檢查結(jié)果是否為1。

          更多示例:

          12 ^ 14 = 1100 ^ 1110 = 0010 = 2

          23 ^ 15 = 10111 ^ 01111 = 11000 = 24

          10 ^ 12 = 1010 ^ 1100 = 0110 = 6


          Python左移

          顧名思義,<< <<(按位向左移位)運算符將位向左移動至該運算符右側(cè)表示的數(shù)字。

          例如,1 << 2將向左移動1以獲得2個值。按位表示,它將顯示如下:

          1 = 0001。

          1 << 2: 0001 << 2 = 0100即4。

          執(zhí)行下面給出的代碼,以在結(jié)果中看到相同的結(jié)果:

          打印(0b0001 << 2)

          如預(yù)期的那樣,1 << 2的答案是4。

          更多示例:

          14 << 1 = 01110 << 1 = 11100 = 28

          24 << 4 = 000011000 << 4 = 110000000 = 384

          19 << 3 = 00010011 << 3 = 10011000 = 152

          到現(xiàn)在為止,您將已經(jīng)知道,當(dāng)在編輯器中表示二進(jìn)制數(shù)字時,在執(zhí)行上述代碼之前,需要將前綴0b前綴。


          Python右移

          顧名思義,>>(右移)運算符會將位向右移至表示在運算符右側(cè)的數(shù)字。

          例如,10 >> 2將使位(1010)向右移動2。

          10 = 1010

          10 >> 2:1010 >> 2 = 0010 = 2

          讓我們通過執(zhí)行以下幾行來確認(rèn)相同的內(nèi)容:

          打?。?b1010 >> 2)

          不出所料,答案是10 >> 2是2。

          更多示例:

          14 >> 1 = 01110 >> 1 = 00111 = 7

          24 >> 4 = 000011000 >> 4 = 00001 = 1

          19 >> 3 = 00010011 >> 3 = 000010 = 2

          這使我們結(jié)束了學(xué)習(xí)Python或與此相關(guān)的任何編程語言的按位運算符的過程。按位運算符的關(guān)鍵只是不知道它們的定義,而是能夠在您的程序中實現(xiàn)它們。為了提高按位運算符的效率,請使用位操作進(jìn)行大量練習(xí),并探討它們在不同情況下的行為。一旦掌握了這些操作員,它們便是解決問題的最好,最快的方法。

          對于您的實踐,我已經(jīng)提到了使用本文中討論的運算符進(jìn)行的一些操作。這些操作數(shù)尚未寫入位,因為對其進(jìn)行探索將有助于您掌握概念。

          執(zhí)行以下操作并分析,探索和觀察結(jié)果。

          35和27

          -23 | 23

          18 >> 5

          -43 << 3

          17 ^ 42


          關(guān)鍵要點:

          • 按位運算符是使用諸如Python之類的編程語言在位級別上運行的運算符。

          • 此外,按位運算符在嵌入式系統(tǒng),網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)和編程中得到了廣泛的應(yīng)用。

          • 此外,按位運算符提供更快,節(jié)省空間和錯誤檢查方法。

          • python中使用的按位運算符為:

          • AND運算符。

          • OR運算符。

          • NOT運算符。

          • XOR運算符。

          • 左移運算符。

          • 右移運算符。


          掃碼關(guān)注我們



          數(shù)據(jù)驅(qū)動框架(Apache POI – Excel)
          Python中的文件處理–為初學(xué)者學(xué)習(xí)Python文件處理
          免費領(lǐng)取百度網(wǎng)盤會員(親測有效)!
          手把手教你使用Python庫打造一款簡易黑客工具
          瀏覽 69
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  毛片一级片 | 午夜福利国产 | 波多野结衣免费看 | 夜色黄网站 | 亚洲黄视频在线播放网址 |