1. public class Test {
  2. public static void main(String[] args) {
  3. // 1、左移( << )
  4. // 0000 0000 0000 0000 0000 0000 0000 0101 然后左移2位后,低位补0://
  5. // 0000 0000 0000 0000 0000 0000 0001 0100 换算成10进制为20
  6. System.out.println(5 << 3);// 5乘以2的3次方,所以运行结果是40
  7.  
  8. // 2、右移( >> ) 高位补符号位
  9. // 0000 0000 0000 0000 0000 0000 0000 0101 然后右移2位,高位补0:
  10. // 0000 0000 0000 0000 0000 0000 0000 0001
  11. System.out.println(9 >> 3);// 9除以2的3次方,小数部分舍去。所以运行结果是1
         System.out.println(-5 >> 3);// -5除以2的3次方,小数部分进1,所以运行结果是-1
  1. // 3、无符号右移( >>> ) 高位补0
  2. // 例如 -5换算成二进制后为:0101 取反加1为1011
  3. // 1111 1111 1111 1111 1111 1111 1111 1011
  4. // 我们分别对5进行右移3位、 -5进行右移3位和无符号右移3位:
  5. System.out.println(5 >> 3);// 结果是0
  6. System.out.println(-5 >> 3);// 结果是-1
  7. System.out.println(-5 >>> 3);// 结果是536870911
  8.  
  9. // 4、位与( & )
  10. // 位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n位为1,否则为0
  11. System.out.println(5 & 3);// 结果为1
  12. System.out.println(4 & 1);// 结果为0
  13.  
  14. // 5、位或( | )
  15. // 第一个操作数的的第n位于第二个操作数的第n位 只要有一个是1,那么结果的第n位为1,否则为0
  16. System.out.println(5 | 3);// 结果为7
  17.  
  18. // 6、位异或( ^ )
  19. // 第一个操作数的的第n位于第二个操作数的第n位 相反,那么结果的第n位为1,否则为0
  20. System.out.println(5 ^ 3);//结果为6
  21.  
  22. // 7、位非( ~ )
  23. // 操作数的第n位为1,那么结果的第n位为0,反之。
  24. System.out.println(~5);// 结果为-6
  25. }
  26. }
  1. // 位运算
  2. public class ByteOperatorDemo {
  3.  
  4. public static void main(String[] args) {
  5. // 运行结果
  6. // 1
  7. // [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 ]
  8. // 2147483647
  9. // [0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ]
  10. // -2
  11. // [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 ]
  12. printValueAnd32Byte(1);
  13. printValueAnd32Byte(Integer.MAX_VALUE);
  14. printValueAnd32Byte(Integer.MAX_VALUE<<1);
  15. }
  16.  
  17. static void printValueAnd32Byte(int x){
  18. System.out.println(x);
  19. System.out.print("[");
  20. for (int i = 31; i >= 0; i--) {
  21. System.out.print(((x >>> i) & 1) + " ");
  22. }
  23. System.out.println("]");
  24. }
  25. }

  

【Java基础】3、Java 位运算(移位、位与、或、异或、非)的更多相关文章

  1. JAVA基础1——字节&位运算

    占用字节数 & 取值范围 Java一共有8种基本数据类型(原始数据类型): 类型 存储要求 范围(包含) 默认值 包装类 int 4字节(32位) -2^31~ 2^31-1 0 Intege ...

  2. java基础-学java util类库总结

    JAVA基础 Util包介绍 学Java基础的工具类库java.util包.在这个包中,Java提供了一些实用的方法和数据结构.本章介绍Java的实用工具类库java.util包.在这个包中,Java ...

  3. 黑马程序员:Java基础总结----java注解

    黑马程序员:Java基础总结 java注解   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! java注解 lang包中的基本注解 @SuppressWarnings ...

  4. Java基础:Java的四种引用

    在Java基础:java虚拟机(JVM)中,我们提到了Java的四种引用.包括:强引用,软引用,弱引用,虚引用.这篇博客将详细的讲解一下这四种引用. 1. 强引用 2. 软引用 3. 弱引用 4. 虚 ...

  5. java基础(二)-----java的三大特性之继承

    在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...

  6. Java基础-使用JAVA代码剖析MD5算法实现过程

    Java基础-使用JAVA代码剖析MD5算法实现过程 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.

  7. Java基础技术-Java其他主题【面试】

    Java基础技术-Java其他主题[面试] Java基础技术IO与队列 Java BIO.NIO.AIO Java 中 BIO.NIO.AIO 的区别是什么? 含义不同: BIO(Blocking I ...

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

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

  9. 【Java基础】Java基本数据类型与位运算

    1.赋值运算符 赋值使用操作符“=”.它的意思是“取右边的值(即右值),把它复制给左边(即左值)”.右值可以是任何 常数.变量或者表达式 (只要它能 生成 一个值就行).但左值必须是一个明确的,已命名 ...

随机推荐

  1. 使用pwm进行呼吸灯的设计

    本文源码已经上传至csdn: 程序源码如下; #define LEDC_IO_0 (2) esp_err_t app_main() { ledc_timer_config_t ledc_timer = ...

  2. 583. Delete Operation for Two Strings

    Given two words word1 and word2, find the minimum number of steps required to make word1 and word2 t ...

  3. javascript-浏览器消息提醒

    如何让用户在浏览器最小化的状态下也能及时的收到消息提醒呢? 这个问题作为webRd是要正面面对的. 大约可分两种场景:一种是类似桌面通知的形式还有一种是类似QQ提醒(在系统任务栏闪烁随后高亮);接下来 ...

  4. 软件包管理之rpm与yum

    软件包的安装和卸载时很平常的事,但在Linux上面却不简单..Linux的其中一个哲学就是一个程序只做一件事,并且做好.组合小程序来完成复杂的任务,这样做有很多好处,但是各个小程序之间往往会存在着复杂 ...

  5. Docker - 常用基础命令

    Docker命令分布 帮助信息 查看docker基本信息:docker info 查看docker版本信息:docker version 查看docker的所有命令及选项:docker --help ...

  6. JavaScript的Date类的函数特殊处理导致的问题

    记得以前参加校招的时候,总是有日期相关的面试题,比如计算两个日期之间的间隔天数.以前还觉得这种题就是为了纯粹为了面试的,但工作了之后,还就碰到了跟日期相关的bug.下面是一段js代码,是要把字符串描述 ...

  7. vue项目打包上线时的配置操作

    vue的图片路径,和背景图片路径打包后错误解决 2017-12-11 16:00 by muamaker, 7037 阅读, 0 评论, 收藏, 编辑 最近在研究vue,老实的按照官网提供的,搭建的了 ...

  8. MathWorks官方消息:神经网络工具箱不能编译

    各位会员大家好,大家关心的问题,我已经大部分得到答案. 10月25号-27号我访问了MathWorks公司在波士顿的总部,大家经常关心的问题,我大部分都得到了答案. 关于神经网络工具箱,我与Matla ...

  9. [,,].length等于几

    分别测试了谷歌.欧朋,火狐,QQ.搜狗,Edge,ie5.7.8.9.10.11 其中ie5,ie7,ie8得到的结果为3 其他均为2:如果最后一个逗号后面为空,则不识别最后一位

  10. JVM 监控,调优,调试

    JVM监控工具 Java的安装包自带了很多优秀的工具,善用这些工具对于监控和调试Java程序非常有帮助.常用工具如下: jps 用途:jps用来查看JVM里面所有进程的具体状态, 包括进程ID,进程启 ...