Java基础-位运算符Bitwise Operators
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的更多相关文章
- Java基础-比较运算符Compare Operators
Java基础-比较运算符Compare Operators 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.关系运算符 关系运算符包括: 1>.大于(>) 2> ...
- 恶补java基础 位运算符
以前不知道在哪看过别人写博客里的一句话 “越学的深入觉得自己会的东西越少”.最近研究了一下java的基础算法 hash表 被一些位运算符搞的头都大了 决心花一些时间研究一下以前一直觉得没用的东西! ...
- java基础-位运算符
1.位运算符 << 左移 : 右边以0填充 >> 带符号右移: 负数前面补1,整数补0 >>>不带符号右移 & 按位与运算 ...
- Java基础-算术运算符(Arithmetic Operators)
Java基础-算术运算符(Arithmetic Operators) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Java程序通过运算符实现对数据的处理,Java中的运算符包括: ...
- Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 ...
- java 基础one ---运算符and流程控制
首先java这个了解下java的基础 首先java文件都是以.java结尾的 然后 他所有的内容都是有一个入口的就是放在了public static void main(String [] args ...
- Java的位运算符详解实例——与(&)、非(~)、或(|)、异或(^)
位运算符主要针对二进制,它包括了:“与”.“非”.“或”.“异或”.从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算.下面 ...
- 再回首,Java温故知新(七):Java基础之运算符
常规算数运算符 包括+.-.*./.%分别对应着加.减.乘.除.取余,算数运算符所处理的两个数字必须为同种类型,如果是不同类型且无法进行自动类型转换的话必须进行强制类型转换,不过强制类型转换可能会丢失 ...
- Java中位运算符的使用
先预知识: 数据在计算机中是以二进制的形式进行存储的,而二进制在内存中是以补码的形式进行存储的.在介绍位运算之前,首先来看一下原码.反码和补码的概念.由于正数的原码.反码和补码的形式都是一样的,所以以 ...
随机推荐
- 软工实践-Beta 冲刺 (2/7)
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...
- 30_数据库_第30天java_jdbc_(DBUtils)_讲义
今日内容介绍 1.DBUtils 2.连接池 01DButils工具类的介绍个三个核心类 * A: DButils工具类的介绍个三个核心类 * a: 概述 * DBUtils是java编程中的数据库操 ...
- linux安全配置学习
参考摘自https://www.cnblogs.com/hiccup/p/4300963.html 1.关闭icmp请求 #vm虚拟机是130地址,通过echo 1 > /proc/sys/ne ...
- Hibernate性能优化之SessionFactory重用
Hibernate优化的方式有很多,如缓存.延迟加载以及与SQL合理映射,通过对SessionFactory使用的优化是最基础的. SessionFactory负责创建Session实例,Sessio ...
- mysql中字符串类型char(n)和varchar(n)的区别
n的含义 根据网络上找到的结果(不能保证准确),在5.0.3以后版本中,n均代表字符数,而不是字节数:我用来测试的版本是5.7.20,该版本中,n表示字符数. 验证过程如下 建表 CREATE TAB ...
- 一文总结之Redis
目录 Redis 目标 Redis简介 什么是Redis 特性 Redis当前应用情况 安装 基本使用 键 exists判断键存在性.del删除键.type键类型 expire key的时效性设置 基 ...
- C#:文件/注册表/线程的操作
文件的操作:(file与fileinfo,前者是静态方法,执行安全检查,适合对一个的操作) 1.1.create: using System; using System.Collections.Gen ...
- DAY7-Python学习笔记
前记: 这几天在弄小程序,view页面的开发很简单,但是在加载图片上遇到了问题,小程序的大小不能超过2M,所以大部分的图片内容要通过request请求服务器来获取,这里之前学习小程序的时候是通过网站A ...
- ZJOI2018外省选手酱油记Day1
Day0 上午考试...又爆零了 下午讲完题后放假 然后就滚回去收拾行李准备去\(ZJ\) Day1 衢州?我怎么从来没听过这个地方..肯定是我见识少 下午 上高铁出发,\(3个小时\),看了一下电影 ...
- BZOJ 3881: [Coci2015]Divljak
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 553 Solved: 176[Submit][Sta ...