搜尋

首頁  >  問答  >  主體

python - 按位“与”、“或”、“异或”运算的使用场景有什么?

按位“与”、“或”、“异或”运算的使用场景有什么?

阿神阿神2804 天前942

全部回覆(5)我來回復

  • 阿神

    阿神2017-04-17 18:02:22

    異或運算是密碼學的核心運算之一。

    很多對稱加密都是基於異或運算。

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-17 18:02:22

    他們都是二進制運算符,都是彙編下概念,一般來講,用不上。
    但是由於他們較為底層的運算符,所以運算起來速度飛起,在常規操作中也能用上。
    例如:
    與運算子一般用來清零。
    與運算子可以用來轉換一個整數到短整數(實際上是把dword轉為word)。

    0xffffeeee&0xffff=0xeeee

    或運算一般用來補碼。
    例如一個整數型是4個位元組,32個位元組,就表示他能做一個容納32位元的配置所在。 (TRUE/FALSE),这个时候可以用來將某位置1。

    異或一般用來加密
    除此之外還有左移當乘法,右移當除法等奇淫異巧。

    這方面知識點太多了,一般沒必要特意學習。如果對二進制了解多的話自然就明白了。老實講,有一定難度。
    我打了半天字,估計能看懂的也沒幾個。 。

    回覆
    0
  • PHPz

    PHPz2017-04-17 18:02:22

    位元運算在嵌入式和驅動程式設計方面運用的更多一點,有關直接操作暫存器的情況下會用上,在應用層方面貌似並不多。
    不過我印像中倒是有很多奇淫技巧會用上,我印象最深刻的是leetcode上面的一道題:
    LeetCode 136. Single Number

    題目很簡單,要求是找出唯一一個在陣列中出現一次的整數,而其他都會出現兩次。

    通常的想法都是打表,然而數組大了之後速度很慢,然後就有了按位異或的演算法。
    直接把數組的所有數字按位異或,最後剩下的那個數字就是所求,至於是為什麼可以去網上搜看。

    回覆
    0
  • 黄舟

    黄舟2017-04-17 18:02:22

    舉個實際場景中的例子
    配置一個位元組中某幾位的值。
    範例:
    要設定這個變數的某一位,用位元或a = a|0x01 ,這是設定了最後一位,要提取某一位的值,可以用按位與b = a&0x01 這是提取最後一位的值。

    回覆
    0
  • 高洛峰

    高洛峰2017-04-17 18:02:22

    • 位元遮罩、點陣圖等

    • 二進位格式處理(例如TCP header)

    • 密碼學

    回覆
    0
  • 取消回覆