zoukankan      html  css  js  c++  java
  • 位运算符

    位运算符

    位运算是对操作数以二进制比特(bit)位为单位进行的操作运算,位运算的操作数和结果都是整型数。几种位运算符和相应的运算规则如表所示。

    运算符 用法 操作
    >> op1>>op2 将op1右移op2个位(带符号)
    << op1<<op2 将op1左移op2个位(带符号)
    >>> op1>>>op2 将op1右移op2个位(不带符号的右移)
    & op1&op2 op1和op2都是true,结果才为true
    op1⊙op2 op1和op2有一个是true,则结果为true
    ^ op1^op2 op1和op2是不同值

    注:⊙是 | 。因为markdown格式的原因,打上去显示不了。。。
    【注意】对于&和|运算符,参与运算的两个运算量可以是逻辑值,也可以是数值数据。对于数值数据,将对两运算量按位对应计算,这时,1相当于true,0相当于false。这个位运算符没有前面逻辑符的附加特点。

    移位运算符
    移位运算是将某一变量所包含的各比特位按指定方向移动指定的位数。通过对第一个运算对象左移或右移右边的操作数的位数来对数据执行位操作。
    移位运算符的例子:

    x(十进制表示) x的二进制补码表示 x<<2 x>>2 x>>>2
    30 00011110 0111100 00000111 00000111
    -17 11101111 10111100 11111011 00111011

    补码最高位是符号位,0表示正数,1表示负数。所以在>>这个带符号右移的运算中,右移后左边留的空位又符号位数字补齐。而不带符号的右移中,右移后左边的空位一律填0。带符号的左移在后面补0。

    按位逻辑运算
    位运算符&,|,~,^分别提供了基于位的与,或,求反,异或操作。其中,异或是指两位值不同时,对应结果位为1,否则为0。
    例:x=13,y=43
    先将数据转换为二进制:x=00001101,y=00101011。
    ~x=11110010,就是把00001101按位求反,得到11110010。然后这个形式是负数的补码形式,负数的补码是由正数的补码(原码)按位求反再加1,所以我们先对11110010求反,得到00001101,再减去1,得到00001100=14。所以~x=14。
    x&y=1001,即9。
    image

  • 相关阅读:

    c#常用的基础概念
    Visual Studio2010+SOS.dll调试入门 摘自 http://www.cnblogs.com/luminji/archive/2011/01/27/1946217.html
    优化数据库之前的10个问题
    js数组清空的两种方式
    我的资源(网站, 工具)
    iis使用十大原则
    SQL2005分页存储过程
    温故而知新:Delegate,Action,Func,匿名方法,匿名委托,事件
    无法获得数据库 'model' 上的排他锁 网上搜索结果 IT
  • 原文地址:https://www.cnblogs.com/HIIM/p/12968898.html
Copyright © 2011-2022 走看看