Java 位运算符 &、|、^、~、<<、>>

以前学过有关java的运算符,不过开发了这么久也很少用过这个。现在由于开发需要,所以现在再来回顾整理下有关java的运算符。

主要运算符有以下:与(&)或(|)异或(^)取反(~)左移(<<)右移(>>)

一 与(&) 和 (|)

1、&(按位与)

规则:将两边的数转换为二进制位,然后运算最终值。运算规则即(两个为真才为真)1&1=1 , 1&0=0 , 0&1=0 , 0&0=0。

举例

4&7 这个运算的结果是多少?

3&5 这个运算的结果是多少?

2、|(按位或)

规则 将两边的数转换为二进制位,然后运算最终值。不同的是运算规则(一个为真即为真)1|0 = 1 , 1|1 = 1 , 0|0 = 0 , 0|1 = 1

举例

3|6 这个运算的结果是多少?

5|9 这个运算的结果是多少?

二、异或(^) 和 取反(~)

1、异或(^)

规则 异就是不同,其运算规则为1^0 = 1 , 1^1 = 0 , 0^1 = 1 , 0^0 = 0

举例

3^6 这个运算的结果是多少?

5^9 这个运算的结果是多少?

2、取反(~)

规则 取反就是1为0,0为1。

举例

~5 这个运算的结果是多少?

这个其实就是,就是把1变0,0变1。

注意:二进制中,最高位是符号位 1表示负数,0表示正数。

~15 这个运算的结果是多少?

三、左移运算(<<) 和 右移运算(>>)

1、左移运算(<<)

规则 左移就是把所有位向左移动几位。

举例

6 << 2 这个运算的结果是多少?

9 << 2 这个运算的结果是多少?

公式 M << n 其实可以这么算 M << n = M * 2^n

2、右移运算(>>)

规则 这个跟左移运算大体是一样的,但是还是有点不同的,不同点在于对于正数和负数补位的时候补的不一样,负数补1,正数补0

举例

12 >> 2 这个运算的结果是多少?

-9 >> 2 这个运算的结果是多少?

从这里就可以看出 正数右移补0,负数右移补1

四、负数的进制表示

我们来思考下

1、负的十进制的转二进制

对于十机制的负数,如何用二进制来表示:

思路三步曲: 1、正数二进制 2、反码 3、反码+1

举例

-1 如何转换成二进制?

说明 -1在计算机里用二进制表达就是全1

2、负的二进制转十进制

上面思路是负的十进制转二进制,那么同样负的二进制转10进制跟上面相反就可以了。

思路三步曲 1、负数的二进制码 2、二进制码-1 3、取反

举例

1111 1101 如何转换成十进制?

参考

1、Java位运算符

2、Java中正负数二进制表示

3、Java基础——十进制负数转换为二进制、八进制、十六进制

 我相信,无论今后的道路多么坎坷,只要抓住今天,迟早会在奋斗中尝到人生的甘甜。抓住人生中的一分一秒,胜过虚度中的一月一年!(3)

最新文章

  1. [转]MSI安装程序中的文件替换
  2. Node聊天程序实例03:chat.js
  3. 性能测试框架Locust初学笔记
  4. FlyCaptureProperty 摄像机属性
  5. 【python cookbook】【数据结构与算法】4.找到最大或最小的N个元素
  6. (转)HTTP协议详解
  7. Hdu1076(n个闰年后的年份)
  8. [C#参考]细说进程、应用程序域与上下文之间的关系
  9. Web 应用程序项目 XXXX 已配置为使用 IIS。 无法访问 IIS 元数据库。您没有足够的特权访问计算机上的 IIS 网站。(转载)
  10. Akka(13): 分布式运算:Cluster-Sharding-运算的集群分片
  11. Django文件上传三种方式以及简单预览功能
  12. 项目总结-timerTask的使用
  13. C++第二课:指针常用法[个人见解]
  14. java_基础_接口和抽象类
  15. 关于toLocaleDateString的坑
  16. Javascript高级编程学习笔记(27)—— BOM(1)window对象1
  17. jsp中forward与redirect
  18. SSD报告 - QRadar远程命令执行
  19. react native 初识生命周期
  20. Python while 循环使用实例

热门文章

  1. 7.秋招复习简单整理之请你讲讲 Statement 和 PreparedStatement 的区别?哪个性能更好?
  2. c++学习书籍推荐《C++ Templates》下载
  3. C语言学习书籍推荐《C语言入门经典(第5版)》下载
  4. Adobe全系软件下载安装工具 CCMaker 1.3.6
  5. 【题解】【合并序列(水题)P1628】
  6. c语言进阶14-线性表之链表
  7. 知识图谱学习与实践(4)——通过例句介绍Sparql的使用
  8. Codeforces1144D(D题)Equalize Them All
  9. 第一章jQuery基础
  10. redis订阅者与发布者