Java的位操作符用来操作整数基本数据类型中的单个“比特”(bit),即代进制位。而我们知道比特就是0和1,那么,位操作就是对这些数据进行基本的操作。如果基本类型是char、byte或者short类型的数值进行移位处理,那么会转化成int类型,再进行移位的处理

Java的按位操作符

按位操作符会对两个参数对应的位执行布尔代数运算,并最终生成一个结果。这个操作符有与(&)、非(~)、或(|)、异或(^)。我们知道单位“比特”(bit),即代进制位,都是0和1,异或(^)可能比较复杂点,两个操作数的位中,相同则结果为0,不同则结果为1。那么最基本的逻辑就像下面这个样子。

1&1 → 11&0 → 0~1 → 0~0 → 11|1 → 11|0 → 11^0 → 1    (1为01,0为00,那么结果就是01,还是1)1^1 → 0

Java的移位操作符

Java的移位操作符无非就是对二进制进行位移。

进行<

进行>>右移,也就是所有所有二进制往右边移动一个位,0010 0000 >> 1 等于0001 0000 。

可以试试下面的例子,整数型的也是变成二进制来计算:

class Test{

public static void main(String[] args){

int numInt1 = 3;

int numInt2 = -3;

System.out.println(numInt1<<1);

System.out.println(numInt1>>1);System.out.println(numInt2<<1);

System.out.println(numInt2>>1);

}

}/* 输出的结果如下(www.breakyizhan.com)

6   ---> 0000 0011<<1 , 变为0000 0110

1   ---> 0000 0011>>1 , 变为0000 0001...1后面的1被顶出去了,所以结果为1

-6   --> 1111 1101<<1 , 变为1111 1010 取反+1= 0000 0110 -6

-2   --> 1111 1101>>1 , 变为1111 1110 取反+1= 0000 0010 -2

*/

当然,还有Java的三元操作符,这部分的功能和if-else有点类似,具体更多内容可以看:

总结

以上所述是小编给大家介绍的Java的按位操作符,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

java 去重复值 按位_详解Java的按位操作符相关推荐

  1. java斐波那契查找_详解Java Fibonacci Search斐波那契搜索算法代码实现

    一, 斐波那契搜索算法简述 斐波那契搜索(Fibonacci search) ,又称斐波那契查找,是区间中单峰函数的搜索技术. 斐波那契搜索采用分而治之的方法,其中我们按照斐波那契数列对元素进行不均等 ...

  2. java object数组转实体类_详解Java中String JSONObject JSONArray List实体类转换

    JSON使用阿里的fastJson为依赖包 gradle依赖管理如下: compile group: "com.alibaba", name: "fastjson&quo ...

  3. java实现的微服务架构_详解Java 微服务架构

    一.传统的整体式架构 传统的整体式架构都是模块化的设计逻辑,如展示(Views).应用程序逻辑(Controller).业务逻辑(Service)和数据访问对象(Dao),程序在编写完成后被打包部署为 ...

  4. java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...

  5. java产生死锁的主要原因_详解java中产生死锁的原因及如何避免

    1. Java中导致死锁的原因 Java中死锁最简单的情况是,一个线程T1持有锁L1并且申请获得锁L2,而另一个线程T2持有锁L2并且申请获得锁L1,因为默认的锁申请操作都是阻塞的,所以线程T1和T2 ...

  6. java中常量final的用法_详解Java中final的用法

    本文主要介绍了Java中final的使用方法,final是java的关键字,本文就详细说明一下它的使用方法,需要的朋友可以参考下 概念 final 具有"不可改变的"的含义,可以修 ...

  7. java守护线程与用户线程_详解Java线程-守护线程与用户线程

    干java 开发这么多年, 之前一直没留意java 进程还区分守护进程和用户进程.守护进程这个概念最早还是在linux系统中接触的,直到近期使用java开发心跳检测功能时,使用Timer时才发现原来j ...

  8. JAVA中创建的redis对象_详解Java在redis中进行对象的缓存

    java在redis中进行对象的缓存一般有两种方法,这里介绍序列化的方法,个人感觉比较方便,不需要转来转去. 一.首先,在存储的对象上实现序列化的接口 package com.cy.example.e ...

  9. hutol json null值没了_详解Java去除json数据中的null空值问题

    1.描述 @JsonInclude(JsonInclude.Include.NON_NULL)标记是jackson包提供的json序列化方法,已经集成于Springboot2.0中,此方法的配置意在可 ...

最新文章

  1. 吃糖学知识?通过舌头传感器,让视障人群“看见”形状
  2. 「镁客·请讲」深睿医疗乔昕:AI医疗才起步,说变革尚早
  3. [Solved] UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte
  4. 灵宝机器人编程学校_灵宝两所学校上榜“河南省中小学人工智能教育实验学校”...
  5. javascript setinterval 正确的语法
  6. Echarts富文本rich及格式化工具formatter的使用
  7. Shopify 英文(多国语言)国际网店 注册指南
  8. python进程池和线程池_Python中的进程池与线程池(包含代码)
  9. win10桌面搜索不能用的问题
  10. php 或取域名的ip,php如何获取域名IP地址代码函数
  11. 20200706每日一句
  12. 带你了解Java Agent
  13. pycharm关闭pytest模式
  14. cat6 万兆_超六类屏蔽网线CAT6AF/FTP10G万兆过测试工程网线益朗通信科技冀州
  15. 【转】打造个性化ghostxp光盘另类教程(2)
  16. Spark快速大数据分析——Spark安装与IDEA 开发(贰)
  17. wordpress瀑布流图片主题PhotoBroad模板V2.0
  18. 傲梅的分区助手助我轻松扩C盘
  19. LeetCode题解(1594):矩阵从左上移动到右下的最大非负积(Python)
  20. 【mac】QQ截图不能用解决方法

热门文章

  1. 关于QQ非会员发图限制
  2. 深入理解全局编录服务器GC
  3. IDEA部署项目和多余的项目删掉的演示
  4. underscore api
  5. 巧用推荐墙入口,APP轻松盈利
  6. Java中常用的加密算法MD5,SHA,RSA
  7. 大家一起讨论一下朋友网的人脉关系算法是怎么实现的
  8. 【hive】hive----自定义UDF 函数-----时间格式化以及取出双引号的代码
  9. php_self include,PHP_SELF返回/index.php/index.php
  10. 金融数据分析与挖掘实战1.7-1.8