码迷,mamicode.com
首页 > 编程语言 > 详细

Java笔记:位运算

时间:2018-02-11 00:07:03      阅读:224      评论:0      收藏:0      [点我收藏+]

标签:补码   span   sys   nbsp   body   无符号   左移   print   gpo   

一、数据存储

二进制数在内存中以补码的形式存放。正数的反码、补码均为本身。负数的反码为符号位不变且其余位取反,补码为反码+1。

 

二、位运算

①按位取反:反转操作数中的所有位。

②按位与:仅当两个操作数都是1,结果为1。否则为0。

③按位或:只要有一个操作数是1,结果为1。否则为0。

④按位异或:只有一个操作数是1,结果为1。否则为0。

⑤左移:将不包括符号位的所有数值向左移动指定次数,右边补充0。每左移一位相当于*2。

⑥右移:将不包括符号位的所有数值向右移动指定次数,左边补充0。每右移一位相当于/2。

⑦无符号右移:将包括符号位的所有数值向右移动指定次数,仅对宽度为32、64的数值有意义,更小的数值会自动提升。

 

三、示例

class Solution {
    public static void main(String[] args) {
        byte a = 42;//00101010
        byte b = 15;//00001111
        System.out.println(~a);//按位取反结果为11010101 补码为10101011
        System.out.println(a & b);//按位与结果为00001010
        System.out.println(a | b);//按位或结果为00101111
        System.out.println(a ^ b);//按位异或结果为00100101

        byte c = 64;//01000000
        System.out.println(c << 1);//左移1位结果为10000000
        System.out.println(c >> 1);//右移1位结果为00100000

        int d = -1;//11111111 111111111 111111111 111111111
        System.out.println(d >>> 24);//无符号右移24位结果为00000000 00000000 00000000 11111111
    }
}

 

Java笔记:位运算

标签:补码   span   sys   nbsp   body   无符号   左移   print   gpo   

原文地址:https://www.cnblogs.com/arseneyao/p/8440059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!