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. 20172321 2017-2018-2《Java程序设计》第三周学习总结

    20172321 2017-2018-2<Java程序设计>第三周学习总结 教材学习内容总结 第三章要点: 要点1 :String类.Random类.Math类和枚举型,这几个是很有用的并 ...

  2. iOS 开发学习-import和include的区别

    //当我们在代码中使用两次#include的时候会报错:因为#include相当于拷贝头文件中的声明内容,所以会报重复定义的错误 //但是使用两次#import的话,不会报错,所以他可以解决重复导入的 ...

  3. 计算器简单封装和ASP.net

    封装: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  4. 软工实践-Beta 冲刺 (4/7)

    队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...

  5. keras+theano+tensorflow+darknet

    keras 安装: 最好在anaconda的虚拟环境下搭建: conda create -n 环境名 python=3.6 进入环境: source activate 环境名 安装keras: pip ...

  6. Eclipse_生成webservice客户端

    1.工具:eclipse3.3或者是带有webservice插件的eclipse wsdl2java(这个本人没用过,具体长什么样不清楚) 2.步骤: 首先用浏览器访问webservice的站点,点击 ...

  7. ubuntu下安装vsftpd及vsftpd配置文件不见的解决办法

    利用命令 sudo apt-get install vsftpd   //安装 进入etc文件可以找到 vsftpd.conf的配置文件 作为新手难免会弄错配置又不知道怎么办,那么可能会利用 sudo ...

  8. mysql 随机获取一条或多条数据

    若要在i ≤r≤ j 这个范围得到一个随机整数r ,需要用到表达式 FLOOR( RAND() * (j – i)+i),RLOOR()取整树部分,RAND()生成0~1的随机数.ROUND(x,n) ...

  9. vSphere下安装Hyper-V

    在vSphere 5.5中默认是无法嵌套安装Hyper-V的,必须在vSphere中稍作修改. 1. 勾选这两个选项,如果是灰色,请升级虚拟机版本至最新: 2. 在配置文件中手动加入这一行参数: 3. ...

  10. 计算机网络【10】—— Cookie与Session

    一.cookie 和session 的区别 a.cookie数据存放在客户的浏览器上,session数据放在服务器上. b.cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKI ...