Java基础-位运算符Bitwise Operators

                                作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.位运算特点

  位运算符分为按位与(&),按位或(|),按位异或(^),按位取反(~)。

  位运算存在以下特点:

      1>.如果&|^两侧为布尔值,就是逻辑操作

        如果两侧为整数就是按位操作

      2>.位运算就是对整数的二进制位进行运算

        a>.1 & 1  == 1

        b>.0  |  0  ==  0

        c>.1 ^ 1  == 1

        d>.1 ^ 1  == 1  

        e>.~1   ==  0

        f>.~0   ==  1

二.案例展示

1.用法展示

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class bitwise{
public static void main(String[] args){
int a = 10;
int b = 20;
int c = a & b;
System.out.println("c==" + c); //c == 0
/**
a变量的值10,它对应的二进制形式为:
00000000 00000000 00000000 00001010
a变量的值20,它对应的二进制形式为:
00000000 00000000 00000000 00010100
按位与&
--------------------------------------------
00000000 00000000 00000000 00000000
*/ c = a | b;
/**
a变量的值10,它对应的二进制形式为:
00000000 00000000 00000000 00001010
a变量的值20,它对应的二进制形式为:
00000000 00000000 00000000 00010100
按位或|
--------------------------------------------
00000000 00000000 00000000 00011110
*/
System.out.println("c==" + c); //c == 30 c = a ^ b;
/**
a变量的值10,它对应的二进制形式为:
00000000 00000000 00000000 00001010
a变量的值20,它对应的二进制形式为:
00000000 00000000 00000000 00010100
按位异或^
--------------------------------------------
00000000 00000000 00000000 00011110
*/
System.out.println("c==" + c); //c == 30 c = ~a;
/**
a变量的值10,它对应的二进制形式为:
00000000 00000000 00000000 00001010
按位取反(~)
--------------------------------------------
11111111 11111111 11111111 11110101
*/
System.out.println("c==" + c); c == -11 }
}

2.面试题来袭

 /*
@author :yinzhengjie
Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/
EMAIL:y1053419035@qq.com
*/ public class bitwise{
public static void main(String[] args){
//如果实现两个数的原地交换,不借助与第三个变量,实现两个数的交换
int x = 10;
int y = 20; //方案一:
x = x + y; //x = 30
y = x - y; //y = 10
x = x - y; //x = 20
System.out.println("x== " + x + ",y== " + y); //方法二:
x = 10;
y = 20;
x = x ^ y; //x == 30
y = x ^ y; //y == 10
x = x ^ y; //x == 20
System.out.println("x== " + x + ",y== " + y); //实际应用中,实现两个数的交换,建议使用以下方法,方便其它程序员可以读懂
x = 10;
y = 20;
int temp = x ;
x = y;
y = temp; System.out.println("x== " + x + ",y== " + y); }
}

Java基础-位运算符Bitwise Operators的更多相关文章

  1. Java基础-比较运算符Compare Operators

    Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...

  2. 恶补java基础 位运算符

    以前不知道在哪看过别人写博客里的一句话  “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法  hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...

  3. java基础-位运算符

    1.位运算符 << 左移 :            右边以0填充 >> 带符号右移:    负数前面补1,整数补0 >>>不带符号右移 & 按位与运算 ...

  4. Java基础-算术运算符(Arithmetic Operators)

    Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...

  5. Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)

    一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 ...

  6. java 基础one ---运算符and流程控制

    首先java这个了解下java的基础 首先java文件都是以.java结尾的  然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...

  7. Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)

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

  8. 再回首,Java温故知新(七):Java基础之运算符

    常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...

  9. Java中位运算符的使用

    先预知识: 数据在计算机中是以二进制的形式进行存储的,而二进制在内存中是以补码的形式进行存储的.在介绍位运算之前,首先来看一下原码.反码和补码的概念.由于正数的原码.反码和补码的形式都是一样的,所以以 ...

随机推荐

  1. Scurm Meeting 11.2

    成员 今日任务 明日计划 用时 徐越 写功能规格说明书,代码移植 创建数据库,代码移植 3h 赵庶宏 编写功能规格说明书,学习访问数据库代码,代码迁移 代码迁移 5h 武鑫 设计界面:独立完成一些简单 ...

  2. OO第一阶段作业总结

    对于OO这门课,学长学姐偶尔提起,大家都略有耳闻,但是并没有将其和计组相提并论.因此,在刚开始接触的时候,并不认为其会比计组难到哪里去,然而事实证明,还是不要想当然去判断,以及不提前学好JAVA对于O ...

  3. 利用JAVA制作简单登录窗口

    import java.awt.Container; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; ...

  4. java的(PO,VO,TO,BO,DAO,POJO)类名包名解释

    VO:值对象.视图对象 PO:持久对象 QO:查询对象 DAO:数据访问对象——同时还有DAO模式 DTO:数据传输对象——同时还有DTO模式 PO:全称是persistant object持久对象最 ...

  5. 配置树莓派/Linux默认声卡设备

    1.设置默认声卡为USB声卡 在$HOME下新建.asoundrc $cd $HOME $nano .asoundrc 输入以下内容 defaults.ctl.card 1 defaults.pcm. ...

  6. Visual Studio发展历程初浅调研

    名称 内部版本 发布日期 支持.NET Framework版本 核心功能 竞争对手 优缺点 Visual C++ 1.0 Visual Studio的最初原型 1992 把软件开发带入了可视化开发的时 ...

  7. CANOpen学习指南

    对于初学者,相对于其他总线的资料来说,在国内CANOpen的资料并不多.而且并不是所有资料都适合初学者看的.这里给出一些建议,对CANOpen感兴趣的,可以参考一下学习的顺序. 前提:需要对CAN总线 ...

  8. python web调用docker-py

    在 /etc/init.d/docker的start()函数末尾加入:chmod 777 /var/run/docker.sock 否则web程序会没有权限去操作  

  9. python & dict & switch

    python & dict & switch python 中是没用switch语句的,这应该是体现python大道至简的思想,python中一般多用字典来代替switch来实现. # ...

  10. 浅谈JavaScript预编译原理

    这两天又把js的基础重新复习了一下,很多不懂得还是得回归基础,大家都知道js是解释性语言,就是编译一行执行一行,但是在执行的之前,系统会做一些工作: 1,语法分析: 2,预编译: 3,解释执行. 语法 ...