• ​二进制运算符:&(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​


    说明

    所有的位运算符操作的都是二进制,而不是我们日常生活中常用的十进制。

    在系统中,一个字节占8位。 

    按位与运算符(&)

    参加运算的两个数据,按二进制位进行“与”运算。

    运算规则:如果两个二进制数的同一个位数上的数都为1,则当前位为1,否则为0.

    示例:0&0=0;  0&1=0;  

    按位或运算符(|)

    参加运算的两个对象,按二进制位进行“或”运算。

    运算规则:如果两个二进制数的同一个位数上的数有一个不为0则当前位为1,否则为0.

    示例:0|0=0;  0|1=1;  1|0=1;   1|1=1;

    取反运算符(~)

    参加运算的一个数据,按二进制位进行“取反”运算。

    示例:~1=0;  ~0=1;

    异或运算符(^)

    用于比较两个二进制数的相应位。在执行按位异或运算时,如果两个二进制数的相应位都为1或两个二进制数的相应位都为0,则返回 0;如果两个二进制数的相应位其中一个为1,另一个为0,则返回 1;

    示例:10^15= 5  

    二进制算法: 

     

    位移运算符(<<)和(>>

    位移运算符分为左位移运算符“<<”和右位移运算符“>>”,分别用于向左和向右执行位移运算。对于X<>N 形式的运算,含义是将 X 向左或向右移动 N 位,X 的类型可以是 int,uint,long,ulong,byte,sbyte,short 和ushort 。需要注意的是,byte,sbyte,short,和 ushort 类型的值在进行位移操作后值的类型讲自动转换成 int 类型。

    左移位运算符(<<)

    “有符号”左移位运算符(<<)将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。

    例如 3 << 2。

    首先把3转换为二进制数字00000000 00000000 00000000 00000011,然后把该数字高位(左侧)的两个零移出,其他的数字都往左平移2位,最后在低位(右侧)空位补零。则得到的最终结果是00000000 00000000 00000000 00001100,则转换为十进制是12。


    左移1位相当于乘以2,例如 3 << 2 =12 则是将数字3左移2位 = 3*2*2.

    在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

    右移位运算符(>>)

    “有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。
    “有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。

    >>运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,移位后得到的数字为正数则补0,负数补1。

    例如11 >> 2,则是将数字11右移2位

     11的二进制形式为:00001011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是00000010.转换为十进制是3.

    右移一位相当于除2,右移n位相当于除以2的n次方。

    Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。

    小结

    位移运算符右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。

    位运算符的优先级 
    ~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。

  • 相关阅读:
    DBCO-PEG-IR825|IR825-PEG-DBCO|二苯并环辛炔-聚乙二醇-IR825荧光染料|DBCO-PEG-IR-825荧光染料
    SpringSecurity源码4
    基于Rplidar二维雷达使用Hector_SLAM算法在ROS中建图
    深度学习500问——Chapter08:目标检测(2)
    路径规划算法:基于世界杯优化的机器人路径规划算法- 附Python代码
    云栖探馆!云小宝首秀遇上老司机小龙,猜猜谁赢了?
    docker容器技术实战-3
    [CKA备考实验][Pod]2.2 Pod的探针类型及其功能演示
    2022.8.10
    HarmonyOS-9(stage模式)
  • 原文地址:https://blog.csdn.net/m290345792/article/details/126614667