关于java中位运算的左移.右移.无符号右移

今天学到了java中的位运算,和C语言还是有所不同的:

>>:右移运算符,num>>1,相当于num/2;

>>>:无符号右移,忽略符号位,空位以0补齐。

位运算的一些规则:

1.byte、short、char在做移位运算之前,会被自动转换为int类型,然后再进行运算。

2.byte、short、int、char类型的数据经过移位运算后结果都为int型。

3.long经过移位运算后结果为long型。

4.在左移位(

5.对于有符号右移位(>>)运算和无符号右移位(>>>)运算,当要移位的位数大于被操作数对应数据类型所能表示的最大位数时,那么先将要求移位数对该类型所能表示的最大位数求余后,再将被操作数移位所得余数对应的数值,效果不变。。比如100>>35=100>>(35%32)=100>>3=12。

因为如果移位的位数超过了该类型的最大位数,那么有效信息就全没了,这种移位是毫无用处的。

而对于无符号右移的一个应用场景:

对01111100 11100010 00101111 10101010,按照四位取值,此时需要用到右移和按位与,此时不适合使用>>,而应该使用>>>,因为如果是负数的话,>>就不会不断移入有效位,而使用>>>等全移入0时可知数据全部移动完毕(该应用场景有可能有疏漏),而且经常会使用的是无符号右移。

对变量进行位运算不会改变变量的值,除非是复合赋值表达式。

另外,位预算对非2的模、幂场景不适用

参考来源:关于java中char,byte,short的移位操作

[原]java 无符号右移

关于java按位操作运算

今天学到了java中的位运算,和C语言还是有所不同的:

>>:右移运算符,num>>1,相当于num/2;

>>>:无符号右移,忽略符号位,空位以0补齐。

位运算的一些规则:

1.byte、short、char在做移位运算之前,会被自动转换为int类型,然后再进行运算。

2.byte、short、int、char类型的数据经过移位运算后结果都为int型。

3.long经过移位运算后结果为long型。

4.在左移位(

5.对于有符号右移位(>>)运算和无符号右移位(>>>)运算,当要移位的位数大于被操作数对应数据类型所能表示的最大位数时,那么先将要求移位数对该类型所能表示的最大位数求余后,再将被操作数移位所得余数对应的数值,效果不变。。比如100>>35=100>>(35%32)=100>>3=12。

因为如果移位的位数超过了该类型的最大位数,那么有效信息就全没了,这种移位是毫无用处的。

而对于无符号右移的一个应用场景:

对01111100 11100010 00101111 10101010,按照四位取值,此时需要用到右移和按位与,此时不适合使用>>,而应该使用>>>,因为如果是负数的话,>>就不会不断移入有效位,而使用>>>等全移入0时可知数据全部移动完毕(该应用场景有可能有疏漏),而且经常会使用的是无符号右移。

对变量进行位运算不会改变变量的值,除非是复合赋值表达式。

另外,位预算对非2的模、幂场景不适用

参考来源:关于java中char,byte,short的移位操作

[原]java 无符号右移

关于java按位操作运算


相关内容

  • Java编程入门
  • Java编程入门 理想情况下,在阅读本书前,你应该对Java程序语言已经有了相当程度的掌握.但或许你已 经很久没有用Java,或者你只是想通学习Java知识来进行手机游戏编程.如果你属于上述情况,那么本教程正是为你准备的.本教程不是要教你Java的所有细节,因为已经有大量的优秀书籍在做这些工作.相反 ...

  • Java的运算符号(逻辑与.或.非.移位运算)
  • 1.只可将AND,OR 或NOT 应用于布尔值.与在C 及C++中不同,不可将一个非布尔值当作布尔值在逻辑表达式中使用. 2.在AND(&&)运算中a()&&b()&&c(),当a为false时,b与c都不再执行,因为整个表达式都是false了,没必要 ...

  • 简单计算器
  • 学院 课程设计 设计课程: 信息系统分析与设计 题 目 简单计算器 姓 名 姓 名 学 院 专 业 指导教师 二O一五 年 6月 20 日 目录 一.概述„„„„„„„„„„„„„„„„„„„„„4 1.1 设计名称„„„„„„„„„„„„„„„„„4 1.2 编写目的„„„„„„„„„„„„„„„ ...

  • 7程序和算法简介
  • 1.程序和程序设计语言(概念.结构) 现预期目的而进行操作的一系列语句和指令. 程序一个程序应该包括以下两方面的内容. 1 2实际上,一个程序除了以上两个主要的要素外,还应当采用程序设计方法进行设计,并 是一个程序员所应具备的知识.程序的结构有以下三种: 语句和B 语句是依次执行的,只有在执行完 A ...

  • ARM命名规则
  • ARM==Advanced RISC Machines 它开创了一种崭新的商业模式,实现了无厂房式工厂,依靠出售芯片技术知识产权的授权来盈利. 其次,ARM是一种architecture,同MIPS.PowerPC.X86等并列.谈到架构,这实际上本身就是一个很复杂的概念.就现在的理解来看,架构是一 ...

  • 三大框架的作用
  • 一.Spring Spring是一个解决了许多在J2EE开发中常见的问题的强大框架. Spring提供了管理业务对象的一致方法并且鼓励了注入对接口编程而不是对类编程的良好习惯.Spring的架构基础是基于使用JavaBean属性的Inversion of Control容器.然而,这仅仅是完整图景中 ...

  • 汇编中有符号与无符号数的区分
  • 汇编中有符号与无符号数的区分 一.只有一个标准! 在汇编语言层面,声明变量的时候,没有 signed 和 unsignde 之分,汇编器统统,将你输入的整数字面量当作有符号数处理成补码存入到计算机中,只有这一个标准!汇编器不会区分有符号还是无符号然后用两个标准来处理,它统统当作有符号的!并且统统汇编 ...

  • MathML: 描述数学表达式|http://www.aspsky.net
  • |  JAVA方舟  |   |  WEB设计  |   |  数据库专栏  |   |  操作平台  |   |  我的地盘  |   |  其它技术  |   |  WEB服务器  |   |  项目管理  | |  其它技术>>[XML编程]>>MathML: 描述数学 ...

  • java4级考试多选题
  • 1 A B C D E 2 A B C D E 3 A B C D E 4 A B C D E 5 A B C D E 6 A B C D E 7 以下关于中断控制语句的描述,错误的是( A E) break语句用于中断当前的程序块,如for 循环块,if 结构块等的执行 continue 停止继续 ...