java位运算,逻辑运算符
位运算逻辑运算符包括: 与(&),非(~),或(|),异或(^).
- &: 条件1&条件2 ,只有条件1和条件2都满足, 整个表达式才为真true, 只要有1个为false,整个表达式就为假false
- 如果条件1为假false, 条件2仍旧需要判断
- 除了用于逻辑条件以外,还可以做数字之间的按位与
- &&: 条件1&条件2 ,只有条件1和条件2都满足, 整个表达式才为真true, 只要有1个为false,整个表达式就为假false
- 如果条件1为假false, 条件2不需要判断
- |: 条件1 | 条件2 ,只要有一个条件为真true,整个表达式就为真true , 如果2个条件都为假,整个表达式才为假false
- 如果条件1为真,条件2仍旧需要判断
- 除了用于逻辑条件以外,还可以做数字之间的按位或
- ||: 条件1 || 条件2 ,只要有一个条件为真true,整个表达式就为真true , 如果2个条件都为假,整个表达式才为假false
- 如果条件1为真,条件2不需要判断
- ^: 按位异或. 参与运算的两个值,如果两个相应位相同,则结果为0,否则为1.
- 0异或任何数等于任何数, 1异或任何数等于任何数取反, 任何数异或自己等于把自己置0
~: 按位取反. 0变1,1变0. 负数在内存中的表现是, 按位取反再加1.
通过按位异或运算,可以实现两个值的交换,而不必使用临时变量.
public class Demo3 {
public static void main(String[] args) {
/** 数a两次异或同一个数b(a=a^b^b)仍然为原值.*/
int a = 100;
int b = 666;
a = a ^ b;
b = b ^ a;
a = a ^ b;
System.out.println("a: " + a + " b " + b);
}
}
可用异或进行加密
&: 与. 当两边操作数的位同时为1时, 结果为1, 否则为0.
位运算判断奇偶, 偶数的最低位是0,奇数的最低位是1.通过这个原理, 我们可以根据整数二进制最后一位与1比较, 判断奇偶.
public class Demo2 {
public static void main(String[] args) {
/** 随机一个整数*/
int a = new Random().nextInt();
/** 判断奇偶性*/
String numStr = ((a & 1) == 1) ? "奇数" : "偶数";
System.out.println("随机数为: " + a + " 是: " + numStr);
}
}
java移位运算符包括:
- <<:左移位
- >>:带符号右移
- >>>:无符号右移
都是相对于二进制的补码来进行移动的
在Java语言中, 二进制数使用补码表示, 最高位为符号位, 正数的符号位为0, 负数为1.
补码的表示规则:
- 正数的最高位为0,其余各位代表数值本身(二进制数).
- 对于负数,通过对该数绝对值的补码按位取反,再对整个数加1.
java位运算,逻辑运算符的更多相关文章
- Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range
在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...
- Java位运算总结:位运算用途广泛《转》
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...
- Java位运算原理及使用讲解
前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1.可能的做法是使用三木运算符,判断原始值 ...
- (转)java位运算
转自:http://aijuans.iteye.com/blog/1850655 Java 位运算(移位.位与.或.异或.非) public class Test { public static ...
- Java位运算总结:位运算用途广泛
前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...
- Java 位运算超全面总结
1.原码.反码.补码 关于原码.反码.补码的相关知识作者不打算在这里长篇大论,相关知识已有别的大佬总结很好了,还请老铁自行 Google,不过有篇知乎回答是作者学编程以来见过对相关知识最通俗易懂,生动 ...
- 我们必须要了解的Java位运算(不仅限于Java)
本文原创地址为 https://www.cnblogs.com/zh94/p/16195373.html 原创声明:作者:陈咬金. 博客地址:https://www.cnblogs.com/zh94/ ...
- Java位运算经典实例
一 源码.反码.补码 正数的源码.反码.补码相同,例如5: 5的源码:101 5的反码:101 5的补码:101 负数的源码.反码.补 ...
- Java 位运算(移位、位与、或、异或、非)
Java提供的位运算符有:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ...
随机推荐
- 2019沈阳网络赛B.Dudu's maze
https://www.cnblogs.com/31415926535x/p/11520088.html 啊,,不在状态啊,,自闭一下午,,都错题,,然后背锅,,,明明这个简单的题,,, 这题题面不容 ...
- elk安装和使用
elk安装和使用 使用的版本都是5.2.0 elasticsearch-5.2.0安装 在官网 下载 elasticsearch tar包 解压安装 tar zxf elasticsearch-5.2 ...
- Python面向对象编程——继承与派生
Python面向对象编程--继承与派生 一.初始继承 1.什么是继承 继承指的是类与类之间的关系,是一种什么"是"什么的关系,继承的功能之一就是用来解决代码重用问题. 继承是一种创 ...
- 新建servlet工程
1.选择新建Dynamic Web Project 2.选择服务器和版本(2.5) 3.src目录下新建一个包 4.包里面新建一个类 5.实现Servlet接口(通过http协议访问) 6.serv ...
- Linux 笔记 - 第六章 Linux 磁盘管理
博客地址:http://www.moonxy.com 一.前言 1.1 硬盘 硬盘一般分为 IDE 硬盘.SCSI 硬盘和 SATA 硬盘.在 Linux 中,IDE 接口的设备被称为 hd,SCSI ...
- 【赶快收藏】Hystrix实战,优雅提升系统的鲁棒性
背景 最近接手了一个系统,其功能都是查询.查询分了两种方式,一种是公司集团提供的查询能力,支持全国各个省份的查询,但是业务高峰期时服务响应比较慢:另外一种是各省的分公司都分别提供了对应的查询能力,但是 ...
- 利用kubeadm快速部署 kubernetes 集群
结合一下两个教程 https://www.cnblogs.com/along21/p/10303495.html 链接:https://pan.baidu.com/s/1O_pcywfso4VFOsF ...
- jqGrid 日期格式化,只显示日期,去掉小时分
{name:'operateTime',index:'operateTime', formatter:"date", formatoptions: {newformat:'Y-m- ...
- 转:int整数除以int整数一定得到的是int整数(易忽视)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/u014053368/article/de ...
- hadoop之mapreduce详解(基础篇)
本篇文章主要从mapreduce运行作业的过程,shuffle,以及mapreduce作业失败的容错几个方面进行详解. 一.mapreduce作业运行过程 1.1.mapreduce介绍 MapRed ...