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. ABP ModuleZero 添加角色_创建角色是报错的问题解决方案

    ABP升级后,大概3.6.1以后,在.net framework里面,从官方下载的Module zero模板添加角色是出现下面错误. 这个问题,算是新版apb的一点小缺憾,好像在.net core的模 ...

  2. 微信小程序组件 自定义多选

    <view class='back'></view> <view class="container"> <!-- 睡眠记录 --> ...

  3. 计算机网络【3】—— IP地址分类与子网划分

    一.IP地址分类

  4. 【移动端debug-4】iOS下setTimeout无法触发focus事件的解决方案

    开篇总结:其实目前无法解决这个bug. 这两天做项目遇到了这个case,项目需求是打开页面的时候,input元素自动弹起键盘.由于各种方面的考虑,我们希望通过setTimeout延时200毫秒让inp ...

  5. HDU4734——2013 ACM/ICPC Asia Regional Chengdu Online

    今天做的比赛,和队友都有轻微被虐的赶脚. 诶,我做的题就是这个题目了. 题目描述就是对于一个十进制数数位上的每一位当做一个二进制位来求出这个数,这个定义为G(x). 题目给定你A和B,求在0-B范围内 ...

  6. 【大数据】Spark基础解析

    第1章 Spark概述 1.1 什么是Spark 1.2 Spark内置模块 Spark Core:实现了Spark的基本功能,包含任务调度.内存管理.错误恢复.与存储系统交互等模块.Spark Co ...

  7. 【大数据】Kafka学习笔记

    第1章 Kafka概述 1.1 消息队列 (1)点对点模式(一对一,消费者主动拉取数据,消息收到后消息清除) 点对点模型通常是一个基于拉取或者轮询的消息传送模型,这种模型从队列中请求信息,而不是将消息 ...

  8. BZOJ5305 HAOI2018苹果树(概率期望+动态规划)

    每种父亲编号小于儿子编号的有标号二叉树的出现概率是相同的,问题相当于求所有n个点的此种树的所有结点两两距离之和. 设f[n]为答案,g[n]为所有此种树所有结点的深度之和,h[n]为此种树的个数. 枚 ...

  9. P4596 [COCI2011-2012#5] RAZBIBRIGA

    题目描述 四个等长的单词可以放在一起构成一个正方形,两个单词水平放置,两个竖直放置.水平单词只能从左往右读,竖直的单词只能从上往下读.四个角共用一个字母. 图中是由单词HLAD,NIVA,HSIN,D ...

  10. Intelligent Factorial Factorization LightOJ - 1035(水题)

    就是暴力嘛...很水的一个题... 不好意思交都... #include <iostream> #include <cstdio> #include <sstream&g ...