学习Java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,通过系统学习学到Java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累。

今天小千给大家分享的技术知识是:java中的位移运算符!

1) “有符号”左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。

左移移位相当于乘以2,例如

3 << 2 //12 则是将数字3左移2位 322 = 3*(2的2次方)

分析:首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:

在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。

2) “有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。 “有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。

>>运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,移位后得到的数字为正数则补0,负数补1。

例如11 >> 2,则是将数字11右移2位

分析:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。

3) Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0

4)右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。

5)位运算符的优先级

~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。

本文来自千锋教育,转载请注明出处。

Java培训教程:Java中的位移运算符!相关推荐

  1. java培训教程分享:Java中怎样将数据对象序列化和反序列化?

    本期为大家介绍的java培训教程是关于"Java中怎样将数据对象序列化和反序列化?"的内容,相信大家都知道,程序在运行过程中,可能需要将一些数据永久地保存到磁盘上,而数据在Java ...

  2. java培训教程分享:Java中用户如何自定义异常?

    我们在学习java技术的时候应该有了解过,在java中是定义了很多的异常类的,虽然这些大量异常类可以帮助我们描述编程时出现的大部分异常情况,但是在程序开发中有时可能需要描述程序中特有的异常情况,例如在 ...

  3. java中的位移运算符_Java 位移运算符

    本人只是 Android小菜一个,写技术文档只是为了总结自己在最近学习到的知识,从来不敢为人师,如果里面有些不正确的地方请大家尽情指出,谢谢! 1.概述 Java 位移运算符是Java中基本的位运算操 ...

  4. java培训教程分享:Java编写软件代码自动提示功能

    本期的java培训教程分享主要是介绍的java编写软件代码的一个自动提示功能,很多零基础和初学java的同学们对这一块还不是很了解,Eclipse for android 实现代码自动提示智能提示功能 ...

  5. java培训教程:什么是匿名内部类?怎样创建匿名内部类?

    本期java教程要为大家分享的是关于java中的匿名内部类,相信很多同学在学java技术的时候有了解过,下面我们就来详细的看一下. java培训教程:什么是匿名内部类?怎样创建匿名内部类?匿名内部类是 ...

  6. Java培训教程:”==“和 equals 方法究竟有什么区别?

    在学习java技术过程中,我们会接触到一些变量值的相关知识,本期小编为大家介绍的教程就是关于"=="和 equals 方法究竟有什么区别?来看看下面的详细介绍. Java培训教程: ...

  7. Java官方教程(三-1)运算符 operator(2020.12.18)

    前言 本文是橙子出于兴趣爱好对Java官方教程的尝试翻译,几乎每日更新,感兴趣的朋友可以关注一下橙子:翻译过程中尽可能多的对一些关键词保留了英文原文,如果你想看最纯正的英文原版教材却又看不懂,可以试着 ...

  8. 深圳Java培训:Java中的国际化

    深圳Java培训:Java中的国际化 国际化,就是项目能够让所有的国家的语言都能够支持.Java既然作为一个跨平台的语言就必然要在各种不同的语言环境中使用.而为了解决这个问题Java给我们提供了一个工 ...

  9. 深圳Java培训:Java中的对象流和序列化

    深圳Java培训:Java中的对象流和序列化 最近,在讲流的使用,其中对象流的作用其实就是将自定义类的对象与流之间相互转换的流. 看起来还是挺简单的,那么看下面的例子: public class St ...

最新文章

  1. .net autofac Web Forms
  2. POST和PUT HTTP REQUEST有什么区别?
  3. mysql中的G标志实现纵向显示
  4. python笔记:fancyimpute
  5. Fatal error: Can't open and lock privilege tables: Table 'mysql.host' doesn't exist的
  6. 使用animate实现页面过度_很多人都在使用的开源CSS动画效果库——animate.css
  7. 换位思考的最高境界是换待遇,所以,换位思考就是空话!!!
  8. 复杂风控场景下,如何打造一款高效的规则引擎
  9. Java 在链表的开头和结尾添加元素
  10. R语言数据集合并、数据增减、不等长合并
  11. 前端开发入门站点推荐
  12. @Transactional之Spring事务深入理解
  13. java 64位 32位_32位和64位的java程序可以通用吗
  14. 雅虎Yahoo 前段优化 14条军规
  15. 时空序列预测模型之PredRNN(用ST-LSTM的预测学习循环神经网络)
  16. 《动手学深度学习》学习笔记(五)-几种常见的卷积神经网络整理。
  17. testcenter自动化
  18. 蓝鲸作业平台:搞定与脚本相关的一切
  19. 计算机的安全模式更改密码,我的电脑进安全模式需要密码,用户名是Administrator,密码忘记了,该怎么办呢?...
  20. 免费高清录直播的软件分享

热门文章

  1. HDU1250 Hat's Fibonacci 大数斐波那契数列
  2. PyTorch-torch.nn.AdaptiveAvgPool2d
  3. ios 内存深度优化_iOS 25个性能优化/内存优化常用方法
  4. mybatis解决属性名和数据列名不一致
  5. linux运行python乱码_linux下python中文乱码解决方案详解
  6. 实验3 动态规划(0/1背包)
  7. MySQL查询连接数
  8. LeetCode 12 整数转罗马数字
  9. C#——LINQ技术DEMO
  10. Git——Git基本教程