zoukankan      html  css  js  c++  java
  • Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

    参考链接:http://blog.csdn.net/vebasan/article/details/6193916

    位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。

    先看一个例子:

    public static void main(String[] args) {
        int a=129;
        int b=128;
        System.out.println("a, "+a+", "+Integer.toBinaryString(a));
        System.out.println("b, "+b+", "+Integer.toBinaryString(b));
        System.out.println("a&b, "+(a&b)+", "+Integer.toBinaryString(a&b));
        System.out.println("a|b, "+(a|b)+", "+Integer.toBinaryString(a|b));
        System.out.println("a^b, "+(a^b)+", "+Integer.toBinaryString(a^b));
        System.out.println("~a, "+~a+", "+Integer.toBinaryString(~a));
        System.out.println("~b, "+~b+", "+Integer.toBinaryString(~b));
    }


    运行结果

    a, 129, 10000001
    b, 128, 10000000
    a&b, 128, 10000000
    a|b, 129, 10000001
    a^b, 1, 1
    ~a, -130, 11111111111111111111111101111110
    ~b, -129, 11111111111111111111111101111111

    结果分析

    1.与运算符
    与运算符用符号“&”表示,其使用规律如下:
    两个操作数中位都为1,结果才为1,否则结果为0。

    “a”的值是129,转换成二进制就是10000001,而“b”的值是128,转换成二进制就是10000000。根据与运算符的运算规律,只有两个位都是1,结果才是1,可以知道结果就是10000000,即128。

    2.或运算符
    或运算符用符号“|”表示,其运算规律如下:
    两个位只要有一个为1,那么结果就是1,否则就为0。

    a 的值是129,转换成二进制就是10000001,而b 的值是128,转换成二进制就是10000000,根据或运算符的运算规律,只有两个位有一个是1,结果才是1,可以知道结果就是10000001,即129。

    3.非运算符
    非运算符用符号“~”表示,其运算规律如下:

    如果位为0,结果是1,如果位为1,结果是0。

    4.异或运算符
    异或运算符是用符号“^”表示的,其运算规律是:
    两个操作数的位中,相同则结果为0,不同则结果为1。

    分析上面的程序段:a 的值是15,转换成二进制为1111,而b 的值是2,转换成二进制为0010,根据异或的运算规律,可以得出其结果为1101 即13。

    举例二

    int c = 7;
    System.out.println("c, "+c+", "+Integer.toBinaryString(c));
    System.out.println("~1, "+(~1)+", "+Integer.toBinaryString(~1));
    System.out.println("c&~1, "+(c&~1)+", "+Integer.toBinaryString(c&~1));

    运行结果

    c, 7, 111
    ~1, -2, 11111111111111111111111111111110
    c&~1, 6, 110

    结果分析

    与(~1)进行&操作时,结果是操作数的最末位被置零。

  • 相关阅读:
    风火轮 –动画效果:擦除、形状、轮子、随机线条、翻转远近、缩放、旋转、弹跳效果
    风火轮 –动画效果:浮入与劈裂
    风火轮 – 飞入动画效果
    风火轮 1
    CB XE6初体验
    在CB2010中调用ffmpeg(5)
    在CB2010中调用ffmpeg(4)
    在CB2010中调用ffmpeg(3)
    在CB2010中调用ffmpeg(2)
    0-99累加
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3123617.html
Copyright © 2011-2022 走看看