• c++位运算符介绍


    下面是C/C++位操作运算符列表,其中运算符优先级为从上到下递减,但<<,>>优先级相同。

    C/C++位操作运算符
    操作符 功能 用法
    ~ 位求反 ~expr
    << 左移 expr1 << expr2
    >> 右移 expr1 >> expr2
    & 位与 expr1 & expr2
    ^ 位异或 expr1 ^ expr2
    | 位或 expr1 | expr2

     

    位简介

    位是数据存储的最小单位。在 计算机中的二进制数系统中,位,简记为b,也称为比特,每个0或1就是一个位(bit)。

    位操作详解

    我们先来看看位运算操作符:& (按位与)、| (按位或)、^ (按位异或)、~ (按位取反)、>> (按位右移)、<< (按位左移)。

    1、&(按位与) 从概念上来讲,就是将参与运算的两个分量对应的每一位来做逻辑与运算,若两者都为真(等于1),则结果才为真(等于1)。否则都为假(等于0)。
    即:1 & 1 = 1 、1&0 = 0 、0&1 = 1、0&0 = 0
    这里我们先来看看那一个8位二进制的例子:
    7&8 = 0000 0111 & 0000 1000 = 0000 0000 = 0
    7&6 = 0000 0111 & 0000 0110 = 0000 0110 = 6

    2、| (按位或) 即把参与运算的每个分量对应的每一位来做逻辑或运算,即两者都为假(为0)时,才为假(为0),否则皆为真。
    即:0|0 = 0、1|0 = 1、0|1 = 1、1|1 = 1
    来看看8位二进制的例子:
    7|8 = 0000 0111 | 0000 1000 = 0000 1111 = 15
    7|6 = 0000 0111 | 0000 0110 = 0000 0111 = 7

    3、^(按位异或) 即把参与运算的每个分量对应的每一位来做异或运算,即两者相同为假,不同为真。
    即:0|0 = 0、 1|0 = 1、0|1 = 1、 1|1 = 0
    看下面的例子:
    7^8 = 0000 0111 ^ 0000 1000 = 0000 0111 = 7
    7^6 = 0000 0111 ^ 0000 0100 = 0000 0011 = 3

    4、~(按位取反) 即把二进制位的每一位进行取反运算,简而言之就是1变成0,0变成1。
    直接看例子:
    ~7 = ~0000 0111 = 1111 1000 = 248

    5 >>(按位右移)把二进制位整体向右移动。
    7>>1 = 0000 0111 >> 1 = 0000 0011 = 3
    7>>2 = 0000 0111 >> 2 = 0000 0001 = 1
    这里右移等于除了2的N次方,N为右移的位数。

    6 <<(按位左移)这里就不详细说了,和右移相反。

    然后讲讲异或,它有一个性质是,两次异或,能还原回来
    例如 a=7,b=6;
    a = a^b^b
    我们来看看那二进制的操作
    a = 0111
    b = 0110
    c = a^b = 0001
    a = c^b = 0111
  • 相关阅读:
    呵呵

    HDU 1878 欧拉回路
    HDU 3293 sort
    HDU 2714 ISBN
    神秀作偈
    大学之道
    写给自己过去疯狂的一年(2)(写在一个特别的时候)
    这几天我的生活就是这样的
    学习和研究计划
  • 原文地址:https://www.cnblogs.com/huolong-blog/p/7587512.html
Copyright © 2020-2023  润新知