Java中移位操作运算符的理解
java中的移位运算符有三种:
1、 <<: 左移
2、 >>: 右移
3、 >>>: 无符号右移
使用方法:左移就是将左边的操作数在内存中的二进制数据左移指定的位数,左边移空的部分补零,右移:如果最高位是0,空位就填0,如果最高位是1,空位就填1。无符号右移无论最高位是什么,空位都补零。
数据在内存中以补码的形式存储
左移和右移的数学意义:
对于左移,对于整型a, a<<n=a*2^n(前提是结果在整型的范围之内),对于右移 正的整型a, a>>n=a/2^n,对于负的整型a,a>>n=-(|a|/2^n+1);
为什么对于右移,正数和负数的结果不一样呢?
我们可以看一个例子:
package sort;public class sort1 {public static void main(String[] args) {// TODO Auto-generated method stubint a=-123;System.out.println("原二进制位:"+Integer.toBinaryString(a));int b=a>>2;System.out.println("右移两位结果为:"+b);System.out.println("右移后二进制位:"+Integer.toBinaryString(b));int c=123;System.out.println("原二进制位:"+Integer.toBinaryString(c));int d=c>>2;System.out.println("右移后的结果为:"+d);System.out.println("右移后二进制位:"+Integer.toBinaryString(d));} }
运行结果为:
对于123,其二进制数为0 1111011,右移两位相当于把0 111000右移两位,而0 111000的十进制为120,所以结果为120/4=30;
对于-123,其二进制数为1 0000101,右移两位相当于把1 0000100右移两位,而1 0000100的十进制为-124,所以结果为-124/4=-31。
转载于:https://www.cnblogs.com/qingergege/p/5687306.html
Java中移位操作运算符的理解相关推荐
- 关于java中位运算符的使用和理解
关于java中位运算符的使用和理解 &(按位与) ' & ' 符号的作用是对运算符的两侧以二进制表达的操作符按位进行'与'运算. 规则: 只有两个操作数对应位同为1时,结果为1,其余全 ...
- java中的.运算符_java中的各种运算符
1.算术运算符: 算术运算符也就是我们小学所学过的:+ - * /:还有取模运算符:%:取模运算符也就是求余的 运算: 运算形式:操作数 + 操作数:操作数 - 操作数:操作数 * 操作数:操作数 / ...
- Java中Map集合如何理解(四)——精简
目录 引言 概念 Map集合实现类 HashMap LinkedHashMap TreeMap 默认排序 自定义排序方式 常用API 遍历Map集合 键找值 键值对 Lambda表达式 结束语 引言 ...
- 12 java中instanceof运算符的意义和用法
java中instanceof运算符的意义和用法 instanceof运算符是用来在运行时指出对象是否是特定类的一个实例.instanceof通过返回一个布尔值来标识该对象是否为特定类或者它的子类的一 ...
- 详细介绍Java中的运算符
Java中类型转换 不同类型的数据可以在一起运算,需要将他们转换为同一类型,就可以进行运算 Java类型转换的分类 隐式类型转换[自动类型转换] 小范围数据转大范围 byte->short-&g ...
- Java中的运算符——逻辑运算符详解
逻辑运算符主要包括逻辑与( & ),逻辑或( | ),逻辑异或( ^ ),短路与( && ),短路或( || ).所有逻辑运算符的特点是操作数都是布尔类型,并且最终的运算结果也 ...
- java中冒号运算符起什么作用呢?
转自: java中冒号运算符起什么作用呢? 下文笔者讲述java中冒号运算符的功能简介说明,如下所示: 冒号运算符的功能: 1.跳转2.三元表达式3.迭代循环4.断言5.switch6.方法(jdk8 ...
- Java中的运算符——赋值运算符详解
赋值运算符主要是这几种:=.+=.-=.*=./=.%=,其它和二进制相关的内容这里就不详细解释了.赋值类的运算符包括基本赋值运算符(=)和扩展的赋值运算符(+=.-=.*=./=.%=).我们来看一 ...
- 8. Java 中的运算符 【连载 8】
在前面的内容已经学会了如何定义变量和初始化变量.定义变量的目的就是为了操作数据.Java 语言中给我们提供了专门用来操作这些数据的代码符号,统称为"运算符". 按照操作符的用法,我 ...
最新文章
- layui导入 加载动画_厉害了!这个免费神器帮你无脑做施工动画
- 浅谈依赖注入与控制反转
- Heap(堆结构/优先队列)-Swift实现
- y7000 intel nvidia 双显卡安装Ubuntu16.04
- 思科、华为交换机的一些命令
- 电脑C盘满了怎么办?这两种方法都能解决
- 【DP】错排问题(ybtoj DP-1-1)
- 【渝粤教育】国家开放大学2018年秋季 0299-21T中国古代文学(1) 参考试题
- 如何让开关打开_汽车油箱盖如何打开?老司机:不外乎这三种方式
- 【PHP学习】—利用ajax原理实现登录功能(八)
- Linux ftp命令
- 第三章 动态规划-基于模型的RL-强化学习理论学习与代码实现(强化学习导论第二版)
- Mysql使用优化之处(转)
- Unity世界坐标转换屏幕坐标(测试)
- Excel VBA初级系列培训--课时2
- 【图像分类】实战——使用ResNet实现猫狗分类(pytorch)
- activiti+app+mysql_SpringBoot Activiti6系列教程(一)-activiti-app部署
- 2.发那科工业机器人操作规范及坐标系介绍
- 电商平台订单获取API接口文档
- 写代码的时候,竟然发现了10+个【了不得】的网站,必须分享
热门文章
- c 是泛型程序设计语言,c ++中的“泛型编程”是什么意思?
- thinkphp 助手函数url不生成https_thinkphp5.0 URL 地址生成
- 服务器内提取文件,linux命令如何提取文件夹内特定文件路径
- 编译c语言程序时 程序中的注释部分将,C语言程序编译时,程序中的注释部分将 答案:不参加编译,也不会出现在目标程序中...
- python默认参数举例_Python之在函数中使用列表作为默认参数
- 怎么判断日出时间早晚_云南8日游攻略以及费用,从西安到云南旅游怎么安排行程?...
- currenttimemillis 毫秒还是秒_亿级数据毫秒级查询!ElasticSearch是怎么做到的?
- android studio socket编程实例
- 磁盘io php,PHP CURL如何处理上传内存中文件,避免磁盘IO开销
- no amd graphics driver怎么解决_《英雄联盟手游》卡顿怎么解决 游戏设置优化教程...