84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
按位“与”、“或”、“异或”运算的使用场景有什么?
闭关修行中......
異或運算是密碼學的核心運算之一。
很多對稱加密都是基於異或運算。
他們都是二進制運算符,都是彙編下概念,一般來講,用不上。 但是由於他們較為底層的運算符,所以運算起來速度飛起,在常規操作中也能用上。 例如:與運算子一般用來清零。 與運算子可以用來轉換一個整數到短整數(實際上是把dword轉為word)。
0xffffeeee&0xffff=0xeeee
或運算一般用來補碼。 例如一個整數型是4個位元組,32個位元組,就表示他能做一個容納32位元的配置所在。 (TRUE/FALSE),这个时候可以用或來將某位置1。
TRUE
FALSE
或
異或一般用來加密除此之外還有左移當乘法,右移當除法等奇淫異巧。
這方面知識點太多了,一般沒必要特意學習。如果對二進制了解多的話自然就明白了。老實講,有一定難度。 我打了半天字,估計能看懂的也沒幾個。 。
位元運算在嵌入式和驅動程式設計方面運用的更多一點,有關直接操作暫存器的情況下會用上,在應用層方面貌似並不多。 不過我印像中倒是有很多奇淫技巧會用上,我印象最深刻的是leetcode上面的一道題:LeetCode 136. Single Number
題目很簡單,要求是找出唯一一個在陣列中出現一次的整數,而其他都會出現兩次。
通常的想法都是打表,然而數組大了之後速度很慢,然後就有了按位異或的演算法。 直接把數組的所有數字按位異或,最後剩下的那個數字就是所求,至於是為什麼可以去網上搜看。
舉個實際場景中的例子配置一個位元組中某幾位的值。 範例:要設定這個變數的某一位,用位元或a = a|0x01 ,這是設定了最後一位,要提取某一位的值,可以用按位與b = a&0x01 這是提取最後一位的值。
位元遮罩、點陣圖等
二進位格式處理(例如TCP header)
密碼學
異或運算是密碼學的核心運算之一。
很多對稱加密都是基於異或運算。
他們都是二進制運算符,都是彙編下概念,一般來講,用不上。
但是由於他們較為底層的運算符,所以運算起來速度飛起,在常規操作中也能用上。
例如:
與運算子一般用來清零。
與運算子可以用來轉換一個整數到短整數(實際上是把dword轉為word)。
或運算一般用來補碼。
例如一個整數型是4個位元組,32個位元組,就表示他能做一個容納32位元的配置所在。 (
TRUE
/FALSE
),这个时候可以用或
來將某位置1。異或一般用來加密
除此之外還有左移當乘法,右移當除法等奇淫異巧。
這方面知識點太多了,一般沒必要特意學習。如果對二進制了解多的話自然就明白了。老實講,有一定難度。
我打了半天字,估計能看懂的也沒幾個。 。
位元運算在嵌入式和驅動程式設計方面運用的更多一點,有關直接操作暫存器的情況下會用上,在應用層方面貌似並不多。
不過我印像中倒是有很多奇淫技巧會用上,我印象最深刻的是leetcode上面的一道題:
LeetCode 136. Single Number
題目很簡單,要求是找出唯一一個在陣列中出現一次的整數,而其他都會出現兩次。
通常的想法都是打表,然而數組大了之後速度很慢,然後就有了按位異或的演算法。
直接把數組的所有數字按位異或,最後剩下的那個數字就是所求,至於是為什麼可以去網上搜看。
舉個實際場景中的例子
配置一個位元組中某幾位的值。
範例:
要設定這個變數的某一位,用位元或a = a|0x01 ,這是設定了最後一位,要提取某一位的值,可以用按位與b = a&0x01 這是提取最後一位的值。
位元遮罩、點陣圖等
二進位格式處理(例如TCP header)
密碼學