java中的移位运算符<<,>>,>>>
转载自该篇博文下网友nan_python发布的评论并略作修改,侵删
<< : 左移运算符,空位补0
>> : 算术右移运算符,空位补最高位值
>>> : 逻辑右移运算符,空位补0
快速算出移位运算符结果方法:
在不大于自身数值类型最大位数的移位时,一个数移位n,就是将这个数乘以(左移)2的n次幂,
右移就是除,然后都取整就可以了
比如int 32位的(64位同理)
500>>3 这样算:500/8 取整 就是62
356>>4 356/16 结果是 22
8<<3 8*8 结果是 64
如果移动过大超过了32位怎么办?移位数和32取余得到的数字在套用上面就可以了
比如 500>>67 怎么算?(就相当于500>>3)
1. 先67对32取余 结果是3
2. 然后500/8 结果62
计算机指令中的左移就是补0,右移位运算符有2种
1. 算术右移 :移动后补的是最高位的值。
举例:一个byte数字99 的二进制是 0110 0011
你右移4位后 补的是0 ------0000 0110
但是再看这一个:byte数字-107二进制是1001 0101 这是1开头的
你右移4位后补的确是最高位1 -------1111 1001
2. 逻辑右移 :空位补0
针对右移,C语言一般根据编译器/机器组合来确定用哪种,但大多数默认算术右移。JAVA明确规定x>>k是算术右移,x>>>k是逻辑右移。
话说回来之所以区分这一点我想应该是对有符号的规定吧,无符号右移肯定是逻辑的啊。最高位本
来就是0,然而对于负数最高位是1,在进行右移时算术右移的提出解决了一个很普遍的问题,那就
是负整数的除法运算,你负数除以一个正数一定是负数吧,如果没有算数右移这一概念的提出不补
1都补0的话你得到的就是正数了,算术右移可以替代除法运算。有了这个就完美了,得到的还是负
数,符合现实中数学常识了。
java中的移位运算符<<,>>,>>>相关推荐
- java中的移位运算符与无符号位移
引用: java中有三种移位运算符 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2>> : 右移运算符,num >&g ...
- java中有三种移位运算符
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- java中的移位运算符
移位运算符是在数字的二进制形式上进行平移.主要有左移(<<).带符号右移(>>)以及无符号右移(>>>). 左移运算符(<<)的运算规则为:按二进 ...
- java 偏移符号_java中的移位运算符总结
java中的移位运算符:<>,>>>总结 java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> ...
- java中 移位运算_java中关于移位运算符的demo与总结(推荐)
首先,移位运算符有三种,其操作类型只支持:byte / short / char / int和long五种. << 左移运算符,表示将左边的操作数的二进制数据向左移动*位,移动后空缺位以0 ...
- java右移位_java中的移位运算符:,,总结
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >& ...
- Java 中的位移运算符
在源码中经常会看到一些位移运算符的使用,比如在看HashMap源码的时候,在计算hashMap容量的阈值的时候,就使用到了位移运算符,代码如下: java中有三种移位运算符 << ...
- java三种移位运算符
java中有三种移位运算符 << : 左移运算符,num << 1,相当于num乘以2 >> : 右移运算符,num >> 1,相当于num除以2 &g ...
- Java培训教程:Java中的位移运算符!
学习Java本来就是一件日积月累的事情,或许你通过自学能掌握一些皮毛技术,通过系统学习学到Java的一些基本大面,但想要做到精通,还是需要自己技术的日积月累和工作经验的不断积累. 今天小千给大家分享的 ...
- java里面value_「Java基础知识」Java中包含哪些运算符
原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...
最新文章
- 论怎么写好一篇实验报告
- 记录避免一些逻辑问题的过程
- kerberos 身份认证 简介
- 【转】Oozie4.2.0配置安装实战
- Silverlight 4 新特性之Silverlight as Drop Target
- Date类的构造方法以及成员方法220
- 开源DataBase组件:FluentMigrator
- 加载PageOffice控件失败。 当前浏览器是42版本以上的谷歌浏览器,建议采用POBrowser技术打开PageOffice即可。
- 深入理解JS对象和原型链
- 送书 | 《深入浅出Python机器学习》
- 稳压二极管的工作原理及稳压二极管使用电路图
- 离散数学期末复习—学习笔记
- pc机箱 图纸_如何升级到新的PC机箱
- ionic代码压缩与代码混淆
- 巴菲特致股东的一封信:1991年
- 微信小程序样式Flex Box精通课程-Flex容器的属性-justify-content内容对齐(左中右)
- Deferred Shading介绍
- 谭浩强C++ 第一章(第三版)
- matlab求二阶微分方程的通解,二阶常微分方程matlab的数值解和解析解分析总报告.ppt...
- java中的构造方法必须和类名相同,在Java中,关于构造方法,下列说法错误的是()A、构造方法的名称必须与类名相同B、构造方法可以...