美文网首页
按位运算符&、|、^、~、<<、>>

按位运算符&、|、^、~、<<、>>

作者: 超级卡布达 | 来源:发表于2020-12-15 15:38 被阅读0次

    按位运算符都是对二进制进行计算

    1.按位与运算符 &(类似逻辑运算符&&):只有对应的两个二进位均为1时,结果才为1,否则为0.

    比如11&25 = 9
    01011 : 11
    11001 : 25


    01001 :9

    2.按位或运算符 | (类似逻辑运算符||):只要对应的两个二进位有一个为1时,结果位就为1,否则为0.

    比如11 | 25 = 27
    01011 : 11
    11001 : 25


    11011 : 27

    3.按位异或 ^:当对应的二进位相异(不相同)时,结果为1,否则为0.

    比如11 ^25 = 18
    01011 : 11
    11001 : 25


    10010 : 18
    规律:相同数值相 ^ 的结果是0,比如6 ^ 6 = 0.
    任何数值跟0进行 ^ ,结果还是原来的数值.9 ^ 0=9
    多个整数相^的结果跟顺序无关,比如5 ^ 6 ^ 7 = 5 ^ 7 ^ 6.
    因此得出结论:a ^ b ^ a = b ,a ^ a=0在0 ^ b = b.

    4.按位取反 ~:对整数的各二进位进行取反,0变1,1变0

    比如9,~9取反为-10
    八个字节
    0000 0000 0000 0000 0000 0000 0000 1001
    取反
    1111 1111 1111 1111 1111 1111 1111 0110
    求负数:再取反+1
    1000 0000 0000 0000 0000 0000 0000 1001 +1 等于 1000 0000 0000 0000 0000 0000 0000 1010(-10)

    5.按位左移运算符 <<:把整数a的各二进位全部左移n位,离位抛弃,低位补0.左移n位其实就是乘以2的n次方。由于左移是丢弃最高位,0补最低位,所以符号位也会被丢弃,左移出去的结果值可能会改变正负性。a*2的n次方

    比如9 << 1
    0000 0000 0000 0000 0000 0000 0000 1001 :9
    八个字节向左挪1位,高位抛弃低位补0
    000 0000 0000 0000 0000 0000 0000 10010 :18

    6.按位右移运算符 >>:把整数a的各二进位全部右移n位。保持符号位不变。右移n位其实就是除以2的n次方

    为正数时,符号位为0,最高位补0.
    为负数时,符号位为1,最高位是补0或是补1取决于编译系统的规定。
    比如 9 >> 1
    0000 0000 0000 0000 0000 0000 0000 1001 :9
    八个字节向左挪1位,高位抛弃低位补0
    00000 0000 0000 0000 0000 0000 0000 100 :4

    相关文章

      网友评论

          本文标题:按位运算符&、|、^、~、<<、>>

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