java位运算

位运算

位运算是在二进制中的运算方式,所有其他进制的数在进行位运算时,都要先转化成二进制数再进行运算。
位运算主要包括按位与(&)、按位或(|)、按位异或(^)、取反( ~ ).

&运算(与运算)

&运算(与运算):两个二进制操作数对应位同为1 结果位 才为1,其余情况为0;
&运算(与运算)中1&1=1,1&0=0,0&0=0

比如,8 & 7 的运算步骤如下:
8的二进制是1000,7的二进制是0111

1000
0111
结果:
0000

把8的每一位都跟7的每一位进行运算,最高位 1&0=0, 后面的第二位是 0&1=0,依此类推。结果为 0000.
所以可以得出0000,故输出的是0。

    public static void andDemo() {
        int result = 8 & 7;
        System.out.println(result);

    }

x & 1

1是0001,其他数跟 1做与运算,都只看最后一位即可,其他的都是0。
8&1,就是二进制1000和0001的与运算,结果得到 0000
7&1,就是二进制0111和0001的与运算,结果得到 0001。
某一个数x, x & 1 可以得到 x 除以 2 的余数。
x & 1 可以来判断奇偶数。

x & (2^m-1)

位运算 x & (2^m-1) ,实际相当于 x % (2^m).

|运算 (或运算)

|运算 (或运算):两个二进制操作数对应位只要有一个为1 结果位 就为1,其余情况为0;
|运算 (或运算). 1|1=1,1|0=1,0|0=0

8 | 7 的运算步骤如下:
0111
1000
结果:
1111
1111转化为十进制是15,也就是说 8 | 7 = 15.

    public static void orDemo() {
        int result = 8 | 7;
        System.out.println(result);

    }

~(取反)

~a:二进制操作数 0的为1,1的为0

    public static void reverseDemo() {
        int result = ~5;
        System.out.println(result);
    }

a ^ b(异或)

a ^ b(异或):两个二进制操作数对应位,相同为0,相异为1

    public static void xorDemo() {
        int result = 5 ^ 10;
        System.out.println(result);

    }

<< (左移)

在十进制中,比如1向左移,得到10。左移一位是乘以10。
而在二进制中,左移一位,相当于乘以2。

    public static void leftDemo() {
        int result = 7 << 1;
        System.out.println(result);
    }

>> (右移)

右移一位,相当于除以2。

    public static void rightDemo() {
        int result = 8 >> 1;
        System.out.println(result);
    }

参考资料:

https://blog.csdn.net/weixin_45124488/article/details/114398536
https://blog.csdn.net/m0_48283915/article/details/108157476

posted on   乐之者v  阅读(45)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-06-06 ElasticSearch---查询es集群状态、分片、索引
2016-06-06 Android笔记:ContextMenu
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示