美文网首页
惊慌失措的位操作

惊慌失措的位操作

作者: xgou | 来源:发表于2016-04-01 14:35 被阅读11次

以下我所说的都是位操作,都转化成2进制情况下。

1.位与操作&

与操作数的第n位如果都是1,那么结果的第n为也为1,否则为0。

2.位或操作|

与作数的第n位只要有一个是1,那么结果的第n为也为1,否则为0。

3.位异或操作^

与操作数的第n位相反,那么结果的第n为也为1,否则为0,ps:0^任何结果都是其本身。

4.位非操作~是一元操作符

操作数的第n位为1,那么结果的第n位为0,反之

5.左移操作<<

就是把操作数往左边移动几位,低位补零。

ps:我下面说的案例是在无符号的情况下。

当然这些概念上的只是一个开场白。

我想说的实际上的用法,咳咳(和各位大牛的语气一样)。

现在我们有个需求,我有很多个开关,组成的一串数字,0代表关,1代表开。

0000 0000 0011 0000 1000 0000 0001 0000

1、需求来了,我现在想让第3位开着(A|=B),这时候我先找到第3位,这个时候我们就需要个临时变量来作左移操作1<<3;

0000 0000 0000 0000 0000 0000 0000 0001

结果:0000 0000 0000 0000 0000 0000 0000 1000

根据上面的描述操作,拿到这个位数的时候在用这个开关去和这个左移的操作去|下,就能让第3位置为1(其实我不管ta曾经是什么样子的,如果不是1,我就整成1,是1那就委屈下)。

0000 0000 0011 0000 1000 0000 0001 0000

0000 0000 0000 0000 0000 0000 0000 1000

根据结果:0000 0000 0011 0000 1000 0000 0001 1000

2、现在我们要验证下,是否已经打开了这个开关(A&B),我们就判断下这个开关&操作下1<<3如果是0就是没打开(其实如果是1<<3本身就是打开了).

0000 0000 0011 0000 1000 0000 0001 1000

0000 0000 0000 0000 0000 0000 0000 1000

根据结果:

0000 0000 0000 0000 0000 0000 0000 1000

3、我要让某个开关关掉,就比较绕了(A&=~B)。

首先把标志位取反,然后在去位于就可以了,先~(1<<3)。

~0000 0000 0000 0000 0000 0000 0000 10001111 1111 1111 1111 1111 1111 1111 0111

然后在位于

0000 0000 0011 0000 1000 0000 0001 1000

1111 1111 1111 1111 1111 1111 1111 0111

根据结果:

0000 0000 0011 0000 1000 0000 0001 0000

到这里困扰我的&,|算是大概明白了什么场合下好用。

相关文章

  • 惊慌失措的位操作

    以下我所说的都是位操作,都转化成2进制情况下。 1.位与操作& 与操作数的第n位如果都是1,那么结果的第n为也为1...

  • 位操作

    位操作乘、除、求余,需要乘以或除以2的n次方,都可以用移位的方法代替1、乘a=a*4 <=> a=a<<2 2、...

  • 位操作

    位操作详解 位运算的操作符有:&、|、^、~、>>、<<,六种,分别对应与,或,异或,按位取反,右位移,左位移 1...

  • 位操作

    c++中位操作操作符 这些位操作符只能用于整形的操作,其他会编译报错。位操作符的运算优先级比较低,因为尽量使用括号...

  • 位操作

    1. 把一个数上调成另一个数的倍数 2. 取某些位 取最低位, 可由数字得到相应的二进制字符串 3. 判断str与...

  • 位操作

    1.概念: ​ In digital computer programming, a bitwise ope...

  • 位操作

  • 位操作

    打印一个变量的二进制值 获取某一位的值将1左移n-1位然后与该变量按位与,等于0就是0,不等于0就是1 取反某一位...

  • InfluxDB 1.3新特性--查询语法新特性

    支持新的数学操作符 取余 (%) 位操作 AND (&) 位操作 OR (|) 位操作 Exclusive-OR ...

  • 头疼的位操作

    起因于 Single Number:一个数字在数组中只出现了一次,其它数字都出现了两次,找到这个数字。 两个相同的...

网友评论

      本文标题:惊慌失措的位操作

      本文链接:https://www.haomeiwen.com/subject/irdylttx.html