移位运算符

包括:
    “>> 右移”;“<< 左移”;“>>> 无符号右移”

例子:
-5>>3=-1
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1111 1111
其结果与 Math.floor((double)-5/(2*2*2)) 完全相同。

-5<<3=-40
1111 1111 1111 1111 1111 1111 1111 1011
1111 1111 1111 1111 1111 1111 1101 1000 
其结果与 -5*2*2*2 完全相同。

5>>3=0
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0000
其结果与 5/(2*2*2) 完全相同。

5<<3=40
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0010 1000
其结果与 5*2*2*2 完全相同。

-5>>>3=536870911      
1111 1111 1111 1111 1111 1111 1111 1011
0001 1111 1111 1111 1111 1111 1111 1111

无论正数、负数,它们的右移、左移、无符号右移 32 位都是其本身,比如 -5<<32=-5、-5>>32=-5、-5>>>32=-5。
一个有趣的现象是,把 1 左移 31 位再右移 31 位,其结果为 -1。
0000 0000 0000 0000 0000 0000 0000 0001
1000 0000 0000 0000 0000 0000 0000 0000
1111 1111 1111 1111 1111 1111 1111 1111


位逻辑运算符

包括:
    & 与;| 或;~ 非(也叫做求反);^ 异或

“& 与”、“| 或”、“~ 非”是基本逻辑运算,由此可以演变出“与非”、“或非”、“与或非”复合逻辑运算。“^ 异或”是一种特殊的逻辑运算,对它求反可以得到“同或”,所以“同或”逻辑也叫“异或非”逻辑。

例子:
5&3=1
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0001

-5&3=3
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0011

5|3=7
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0111

-5|3=-5
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0011
1111 1111 1111 1111 1111 1111 1111 1011

~5=-6
0000 0000 0000 0000 0000 0000 0000 0101
1111 1111 1111 1111 1111 1111 1111 1010

~-5=4
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0100

5^3=6
0000 0000 0000 0000 0000 0000 0000 0101
0000 0000 0000 0000 0000 0000 0000 0011
0000 0000 0000 0000 0000 0000 0000 0110

-5^3=-8
1111 1111 1111 1111 1111 1111 1111 1011
0000 0000 0000 0000 0000 0000 0000 0011
1111 1111 1111 1111 1111 1111 1111 1000

其他知识补充:

原码、反码(原码取反)、补码(反码+1)

再举一例,我们来看整数-1在计算机中如何表示。

假设这也是一个int类型,那么:

1、先取1的原码:00000000 00000000 00000000 00000001

2、得反码:     11111111 11111111 11111111 11111110

3、得补码:     11111111 11111111 11111111 11111111

可见,-1在计算机里用二进制表达就是全1。16进制为:0xFFFFFF。

转载于:https://www.cnblogs.com/rongxh7/archive/2011/03/01/1968479.html

Java 中的位运算相关推荐

  1. JAVA中的位运算操作

    1.名词解释 首先,位移运算仅针对整数,非整数不支持位移运算. ①<<:左移操作符,低位补0. ②>>:算数右移符,高位补符号位. ③>>>:逻辑右移符,高位 ...

  2. 关于java中的位运算

    问题:为什么第一种写法循环到8和9的时候,结果和预期不一样, 如果程序将11111110当成10进制的数(十进制11111110的二进制为‭101010011000101011000110‬) 那么前 ...

  3. 位运算java_Java中的位运算

    Java中的位运算,说实话,工作了两年的时间里,从来没有用过一次,因为平时都是些的是业务代码,很少接触比较底层的东西,我记得第一次在代码中看到还是在HashMap的Hash算法中看到的,这次重拾Jav ...

  4. HashMap中的位运算

    Java 8 中 HashMap 的实现使用了很多位操作来进行优化.本文将详细介绍每种位操作优化的原理及作用. Java 中的位运算 位操作包含:与.或.非.异或 移位操作包含:左移.右移.无符号右移 ...

  5. Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位

    Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢?  二.代码理解 ...

  6. Java整形位运算避免精度缺失,中国大学MOOC: 在Java语句中,位运算操作数只能为整型或______数据。...

    中国大学MOOC: 在Java语句中,位运算操作数只能为整型或______数据. 答:字符型 YEAR(date)函数返回值的数据类型是 答:int 青色食物应 木,红色食物应 火,黄色食物应 土,白 ...

  7. Java中「与运算,或运算,异或运算,取反运算。」

    Java中「与运算,或运算,异或运算,取反运算.」 文章目录 Java中「与运算,或运算,异或运算,取反运算.」 Java中的「与运算(AND) & 」 规则 :都为1时才为1,否则为0 Ja ...

  8. Java中的 移位 运算

    Java中的 移位 运算 正数 左移 右移 无符号右移 负数 右移 无符号右移 左移 下面通过代码来演示: (在注释中 会标明 移位运算的 一些理论 ) public class Move {publ ...

  9. 解析java中的除法运算和取模运算

    解析java中的除法运算和取模运算 A.除法运算 a.含义及其语法 除法运算就是被除数除以除数的这一过程 语法: 被除数/除数 注意:除数不能为0,且被除数和除数都得是数字 b.应用场景 1.和取模运 ...

最新文章

  1. “躲避球”体育游戏《Sparc》登陆Rift和Vive,可以和PS用户一起玩了【附游戏视频】
  2. 天文学家搞医术,Science也挡不住
  3. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1103:陶陶摘苹果
  4. docker实战系列之搭建rabbitmq
  5. python substr_python数据分析-数据对象(一)
  6. mysql会对同时读取加锁吗_程序员经典面试题,MySQL并发读写的时候,都是需要加锁的么?...
  7. 垂死病中惊坐起_我如何开始恢复垂死的软件团队的过程
  8. 【Spring】HttpMessageConverter的作用及替换
  9. python 其他语言_谈谈Python和其他语言的区别
  10. php银行学生助学贷款管理系统
  11. 百度网盘高速直链提取
  12. linux超市参数,TI AM5708开发板产品参数介绍
  13. 惠普微型计算机 使用教程,惠普打印机怎么用 打印机使用注意事项【图文教程】...
  14. 神奇宝贝:面向开发人员的免费RESTful神奇宝贝API
  15. 万丈高楼平地起,开始给Java打地基
  16. 多目标优化详解【转载】
  17. PCB焊接及上电测试流程
  18. 前端如何实现选项卡效果?
  19. NC6自助开发文件存放路径及一些总结以及修改自助登录界面的样式、图片、添加文字提示等文件
  20. 全自动化学加药装置循环水应用介绍

热门文章

  1. 霍金一生重要时刻照片合集,3次来中国,年轻时也是帅哥一枚
  2. 为什么个体户贷款那么难
  3. Visual Studio 2008 Beta 2 VPC寿命延长
  4. 状态机在VHDL中的实现
  5. python文本清洗_【python】TXT文本数据清洗和英文分词、词性标注
  6. java数组如何相加_java数组排序,并将数组内的数据求和
  7. 7-7 六度空间 (30分)_现役球员中,谁最可能成下一位30000分先生?3大前十巨星没戏...
  8. php自定义能过滤器,过滤器与自定义过滤器的介绍
  9. Unity shader图集Atlas下的UV坐标归一化转换
  10. GameObject数组逐渐消失