位运算逻辑运算符包括: 与(&),非(~),或(|),异或(^).

  • &:  条件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位运算,逻辑运算符的更多相关文章

  1. Java 位运算2-LeetCode 201 Bitwise AND of Numbers Range

    在Java位运算总结-leetcode题目博文中总结了Java提供的按位运算操作符,今天又碰到LeetCode中一道按位操作的题目 Given a range [m, n] where 0 <= ...

  2. Java位运算总结:位运算用途广泛《转》

    前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...

  3. Java位运算原理及使用讲解

    前言日常开发中位运算不是很常用,但是巧妙的使用位运算可以大量减少运行开销,优化算法.举个例子,翻转操作比较常见,比如初始值为1,操作一次变为0,再操作一次变为1.可能的做法是使用三木运算符,判断原始值 ...

  4. (转)java位运算

    转自:http://aijuans.iteye.com/blog/1850655 Java 位运算(移位.位与.或.异或.非)   public class Test { public static ...

  5. Java位运算总结:位运算用途广泛

    前天几天研究了下JDK的Collection接口,本来准备接着研究Map接口,可是一查看HashMap类源码傻眼咯,到处是位运算实现,所以我觉得还是有必要先补补位运算知识,不然代码看起来有点费力.今天 ...

  6. Java 位运算超全面总结

    1.原码.反码.补码 关于原码.反码.补码的相关知识作者不打算在这里长篇大论,相关知识已有别的大佬总结很好了,还请老铁自行 Google,不过有篇知乎回答是作者学编程以来见过对相关知识最通俗易懂,生动 ...

  7. 我们必须要了解的Java位运算(不仅限于Java)

    本文原创地址为 https://www.cnblogs.com/zh94/p/16195373.html 原创声明:作者:陈咬金. 博客地址:https://www.cnblogs.com/zh94/ ...

  8. Java位运算经典实例

    一 源码.反码.补码 正数的源码.反码.补码相同,例如5:            5的源码:101            5的反码:101            5的补码:101 负数的源码.反码.补 ...

  9. Java 位运算(移位、位与、或、异或、非)

    Java提供的位运算符有:左移( << ).右移( >> ) .无符号右移( >>> ) .位与( & ) .位或( | ).位非( ~ ).位异或( ...

随机推荐

  1. JSP四大作用域属性范围

    JSP四大作用域分别为:page, request ,session, application . 第一个作用域是page,他只在当前页面有效,也就是用户请求的页面有效,当当前页面关闭或转到其他页面时 ...

  2. 基础知识:Mysql基本操作命令

    启动mysql :  mysql -hlocalhost -uroot -p 创建数据库:create database 数据库名字; 指定要操作的数据库:use 数据库名字; 查看数据表建表语句:s ...

  3. ASP.NET Core SignalR:集线器Hubs

    一.什么是集线器hubs 通过SignalR的集线器hubs中定义的方法,服务器可以调用连接中的客户端定义的方法,而客户端也可以调用服务器端集线器中定义的方法.SignalR负责实现了客户端和服务器之 ...

  4. redis的几个知识点

    Redis的全称是Remote Dictionary Server,即远程字典服务,通常用作服务器缓存服务. 这里通过Redis的几个知识点来了解Redis. Redis的通讯协议 Redis的通讯协 ...

  5. Java使用Optional与Stream来取代if判空逻辑(JDK8以上)

    Java使用Optional与Stream来取代if判空逻辑(JDK8以上) 通过本文你可以用非常简短的代码替代业务逻辑中的判null校验,并且很容易的在出现空指针的时候进行打日志或其他操作. 注:如 ...

  6. 使用T2表中的值替换T1表的值

    描述:现在有两张表,T1由Key和Value两个字段,T2也有Key和Value两个字段 当T1中的Key在T2表中存在时,更新使用T2表中对用的Value 值替换T1中的VAlue update A ...

  7. Python 为什么要保留显式的 self ?

    花下猫语:前两天,我偶然在一个知识星球(刘欣老师的"码农翻身")里看到一篇主题,刘老师表示 Python 的类方法非要带个 self,而不像其它语言那样隐藏起来,这让人很不爽.我对 ...

  8. Android Studio [WebView]

    WebViewActivity.java package com.xdw.a122; import android.graphics.Bitmap; import android.support.v7 ...

  9. Centos7搭建Scrapy爬虫环境

    写在前面 因为之前的爬虫环境一直是部署在我自己本地的电脑上的,最近,写了一个监控别人空间的爬虫,需要一直线上24小时运行,所有就打算云服务器上部署环境,也捣鼓了好一会才弄好,还是有一些坑,这里先记录一 ...

  10. Python学习笔记整理总结【网络编程】【线程/进程/协程/IO多路模型/select/poll/epoll/selector】

    一.socket(单链接) 1.socket:应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socke ...