java 位运算中移动位数超过数据长度和右移的两种不同方式
2017-04-27 14:24
417 查看
记录 java 位运算中的两点注意事项:移动位数超过数据长度和右移的两种不同方式。
在实际应用中,需要特别注意这点,当然也可以巧用此特性实现一些特殊算法的设计。
逻辑右移以0补全高位,而算术右移则是根据数据的第一位决定右移后高位补全的内容,若为1则补1,否则补0。
==========================================
疑问?帮助?批评?欢迎评论 | QQ:593159978
int、long类型数据移动等于或超过最大位数
在 java 中,int 类型的数据长度为 32 位,如果将 int 类型左移或者右移大于或等于 32 位时,并不会像预计的那样将数据全部填充为1或0。java 的处理方式是:当刚好为数据长度的整数倍时,即32、64······,数据保持原来不变;其他情况下移动除以 32 余数的长度。同理 long 类型数据以 64 为变化基准。在实际应用中,需要特别注意这点,当然也可以巧用此特性实现一些特殊算法的设计。
算术右移、逻辑右移、无符号右移
在 java 中左移只有一种,以0补齐低位,运算符号为 <<。而又移分为两种:算术右移 >> 和逻辑右移 >>>,其中逻辑右移也叫作无符号右移。逻辑右移以0补全高位,而算术右移则是根据数据的第一位决定右移后高位补全的内容,若为1则补1,否则补0。
==========================================
疑问?帮助?批评?欢迎评论 | QQ:593159978
相关文章推荐
- 多个对象访问共享对象和数据的方式——一道JAVA就业面试题的不同解法
- java Thread编程(三) 同步的两种不同实现方式
- java不同数据类型在内存中的存储方式
- Java中String两种不同创建方式的区别及intern的用法
- 移动表空间内数据两种方式
- 不同位数机器上各个数据类型的长度
- Java导出数据为EXCEL的两种方式JXL和POI
- opengl中的Floatbuffer和IntBuffer与java中数据的存储方式不同的解决方法,编辑一个自己的BufferUtil工具类
- Java处理excel两种不同的方式
- Java解析Json数据的两种方式
- 大数据IMF传奇行动绝密课程第83课:透彻讲解使用Scala和Java两种方式实战Spark Streaming开发
- Java链接Oracle数据库时候调用含有游标的存储过程(两种不同处理方式)
- Java字符流读写数据的两种方式
- java 位运算 以及10进制数据转换不同进制数据
- java中数据库访问方式的不同处理数据总结:
- java Thread编程(三) 同步的两种不同实现方式
- 关于希尔算法的理解以及两种不同的移动方式
- java 读取文件——按照行取出(使用BufferedReader和一次将数据保存到内存两种实现方式)
- 【javaWeb】前后端传递数据交互的两种方式
- Java 中 Form表单数据的两种提交方式