zoukankan      html  css  js  c++  java
  • 按位与、或、非、异或总结

    位运算符有:&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)。
    优先级从高到低,依次为~、&、^、|
    1. 按位与操作

    0&0=0; 0&1=0; 1&0=0; 1&1=1(有0则0

    例子:10&9: 0000 1010 & 0000 1001 = 0000 1000 = 8
    负数按补码形式参加按位与运算

    “与运算”的特殊用途:
    (1)清零。如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都为零的数值相与,结果为零。
    (2)取一个数中指定位
    方法:找一个数,对应X要取的位,该数的对应位为1,其余位为零,此数与X进行“与运算”可以得到X中的指定位。
    例:设X=10101110,
    取X的低4位,用 X & 0000 1111 = 0000 1110 即可得到;
    还可用来取X的2、4、6位。
    2. 按位或运算符(|)

    0|0=0;0|1=1;1|0=1;1|1=1(有1则1

    即 :参加运算的两个对象只要有一个为1,其值为1。
    例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111 因此,3|5的值得7。

    另,负数按补码形式参加按位或运算。

    “或运算”特殊作用:

    常用来对一个数据的某些位 置1。

    方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。

    例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。

    3. 异或运算符(^)
    0^0=0;0^1=1;1^0=1;1^1=0;(同0异1

    即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。
    例如:10^-9 即 0000 1010 ^ 1111 0111 = 1111 1101(补码) 原码即为1000 0011 即10^-9 = -3

    “异或运算”的特殊作用:

    (1)使特定位翻转 找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。

    例:X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。
    (2)与0相异或,保留原值 ,X ^ 0000 0000 = 1010 1110。

    (3)交换a和b

    4. 取反运算符(~)
    ~1=0;~0=1;

    即:对一个二进制数按位取反,即将0变1,1变0。
    使一个数的最低位为零,可以表示为:a&~1。

    ~1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。

    5. 位移运算符(<<,>>)
    左移运算符(<<将一个运算对象的各二进制位全部左移若干位

    操作数每左移一位,相当于该数乘以2。

    右移运算符(>>)将一个数的各二进制位全部右移若干位

    操作数每右移一位,相当于该数除以2。

  • 相关阅读:
    Pascal's Triangle II
    Pascal's Triangle
    Best Time to Buy and Sell Stock II
    Best Time to Buy and Sell Stock
    Populating Next Right Pointers in Each Node
    path sum II
    Path Sum
    [转载]小波时频图
    [转载]小波时频图
    [转载]Hilbert变换及谱分析
  • 原文地址:https://www.cnblogs.com/wizarderror/p/11270496.html
Copyright © 2011-2022 走看看