84669 orang belajar
152542 orang belajar
20005 orang belajar
5487 orang belajar
7821 orang belajar
359900 orang belajar
3350 orang belajar
180660 orang belajar
48569 orang belajar
18603 orang belajar
40936 orang belajar
1549 orang belajar
1183 orang belajar
32909 orang belajar
按位“与”、“或”、“异或”运算的使用场景有什么?
闭关修行中......
异或运算是密码学的核心运算之一。
很多对称加密都是基于异或运算。
他们都是二进制运算符,都是汇编下概念,一般来讲,用不上。但是由于他们较为底层的运算符,所以运算起来速度飞起,在常规操作中也能用上。比如:与运算符一般用来清零。与运算符可以用来转换一个整数到短整数(实际上是把dword转为word)。
0xffffeeee&0xffff=0xeeee
或运算一般用来补码。比如一个整数型是4个字节,32个比特位,就意味着他能做一个容纳32位的配置所在。(TRUE/FALSE),这个时候可以用或来将某位置1。
TRUE
FALSE
或
异或一般用来加密除此之外还有左移当乘法,右移当除法等奇淫异巧。
这方面知识点太多了,一般没必要特意学习。如果对二进制了解多的话自然就明白了。老实讲,有一定难度。我打了半天字,估计能看懂的也没几个。。
位运算在嵌入式和驱动编程方面运用的更多一点,有关直接操作寄存器的情况下会用上,在应用层方面貌似并不多。不过我印象中倒是有很多奇淫技巧会用上,我印象最深刻的是leetcode上面的一道题:LeetCode 136. Single Number
题目很简单,要求是找出唯一一个在数组中出现一次的整数,而其他都会出现两次。
通常的思路都是打表,然而数组大了之后速度很慢,然后就有了按位异或的算法。直接把数组的所有数字按位异或,最后剩下的那个数字就是所求,至于是为什么可以去网上搜搜看。
举个实际场景中的例子配置一个字节中某几位的值。例子:要设置这个变量的某一位,用按位或 a = a|0x01 ,这是设置了最后一位,要提取某一位的值,可以用按位与b = a&0x01 这是提取最后一位的值。
Bitmask, bitmap, etc.
Binary format processing (e.g. TCP header)
Cryptography
异或运算是密码学的核心运算之一。
很多对称加密都是基于异或运算。
他们都是二进制运算符,都是汇编下概念,一般来讲,用不上。
但是由于他们较为底层的运算符,所以运算起来速度飞起,在常规操作中也能用上。
比如:
与运算符一般用来清零。
与运算符可以用来转换一个整数到短整数(实际上是把dword转为word)。
或运算一般用来补码。
比如一个整数型是4个字节,32个比特位,就意味着他能做一个容纳32位的配置所在。(
TRUE
/FALSE
),这个时候可以用或
来将某位置1。异或一般用来加密
除此之外还有左移当乘法,右移当除法等奇淫异巧。
这方面知识点太多了,一般没必要特意学习。如果对二进制了解多的话自然就明白了。老实讲,有一定难度。
我打了半天字,估计能看懂的也没几个。。
位运算在嵌入式和驱动编程方面运用的更多一点,有关直接操作寄存器的情况下会用上,在应用层方面貌似并不多。
不过我印象中倒是有很多奇淫技巧会用上,我印象最深刻的是leetcode上面的一道题:
LeetCode 136. Single Number
题目很简单,要求是找出唯一一个在数组中出现一次的整数,而其他都会出现两次。
通常的思路都是打表,然而数组大了之后速度很慢,然后就有了按位异或的算法。
直接把数组的所有数字按位异或,最后剩下的那个数字就是所求,至于是为什么可以去网上搜搜看。
举个实际场景中的例子
配置一个字节中某几位的值。
例子:
要设置这个变量的某一位,用按位或 a = a|0x01 ,这是设置了最后一位,要提取某一位的值,可以用按位与b = a&0x01 这是提取最后一位的值。
Bitmask, bitmap, etc.
Binary format processing (e.g. TCP header)
Cryptography