位运算

参考:位运算技巧

位运算的使用

1.and运算
and运算通常用于二进制取位操作,例如一个数and1的结果就是取二进制的最末位。
2.or运算
or运算通常用于二进制特定位上的无条件赋值,例如一个数or1的结果就是把二进制最末位强行变成1.如果需要把二进制最末位变成0,对这个数or1之后再减1就可以了,实际意义就是把这个数强行变成最接近的偶数。
3.xor运算
xor 的意思就是 "是不是不一样"。
这个算是我自己遇到比较多的一种位操作,Leetcode中遇到通过位操作取巧来解决的题目还是比较多的。xor运算通常对二进制的特定一位进行取反操作。
这里是今天学习到的:xor运算的逆运算是其本身,即(a xor b)xor b =a。xor可以用于简单的加密,告知对方一次加密的值,以及其中一个a(b),我们可以得到b(a)。
而且xor可以用于交换两个数的值。在python中:

 a,b
(3, 5)
>>> a = a^b
>>> b = a^b
>>> a = a^b
>>> a,b
(5, 3)

4.not运算
not的定义为全部取反。
5.shl运算
a shl b表示a转为二进制后左移b位(在后面加上b个0)。实际上,左移b位其实就是相当于a×2^b。而在底层运算中,左移操作也比内置的运算速度要快的多。

>>> 4 << 2
16
>>> 2 <<2
8

6.shr运算
a shr b也就是将其转为二进制后右移b位,等于a/(2^b),

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • (一):基础篇 Matrix67: The Aha Moments 位运算简介及实用技巧(二):进阶篇(1) 位运...
    狼之独步阅读 1,015评论 0 1
  • 位运算简介 程序中所有数字在计算机的内存中都是以二进制形式存储,位运算是直接对二进制位进行操作。 C 语言中的 6...
    某尤阅读 708评论 0 0
  • C语言里位运算就是对一个比特(Bit)进行操作,比特(Bit)是计算机的一个电子元件,只有通电和断电两种状态(这也...
    Mark_Ming阅读 2,569评论 0 8
  • 进制二进制以0b或0B开头,如0b001。(数字0不是字母O)八进制以0开头,如067。十六进制以0x或0X开头,...
    ForeverYoung21阅读 1,037评论 0 5
  • 今天被前辈的字触动了,以后再不能随心所欲,要开始认真练字。字体大小把控不好,还得从米字格开始写。
    娟好_静秀阅读 728评论 0 0