java中的移位操作
文章目录
- 一、左移 <<
- 二、右移
- 1、有符号右移 >>
- 2、无符号右移>>>
- 三、补充
一、左移 <<
向左移动,高位丢弃,低位用0补齐
不溢出的情况下num<<1相当于num*2
例如
int i = Integer.MIN_VALUE;System.out.println(Integer.toBinaryString(i));// 10000000000000000000000000000000System.out.println(Integer.toBinaryString(i << 1));// 0
二、右移
1、有符号右移 >>
向右移动,高位用符号位补齐,低位丢弃
不溢出的情况下num>>1相当于num/2
int i = Integer.MIN_VALUE;System.out.println(Integer.toBinaryString(i));// 10000000000000000000000000000000System.out.println(Integer.toBinaryString(i >> 1));// 11000000000000000000000000000000
任何一个负数,如果一直右移下去,最终都会得到 -1
System.out.println(Integer.toBinaryString(i >> 31)); //(i < 0)// 11111111111111111111111111111111(-1)
2、无符号右移>>>
向右移动,高位用0补齐,低位丢弃
int i = -3;System.out.println(Integer.toBinaryString(i));// 11111111111111111111111111111101System.out.println(Integer.toBinaryString(i >>> 1));// 1111111111111111111111111111110(第一位的0没有显示)System.out.println(i >>> 1);// 2147483646
任何一个数,如果一直无符号右移下去,最终都会得到0
System.out.println(i >>> 31 >>> 1);
三、补充
当移位的位数大于或等于数据类型的表示位数时,会先对移位的位数取模
举个例子:对于int,其表示位数时32位,如果我们要对一个int型的整数num做移位操作,
移动位数为33,那么,计算时会先将33对32取模得到1,然后对num进行1位的移位操作。
如果移动位数是32,那么,不做操作
这也是我上面最后一行代码对i的移位分两次
System.out.println(i >>> 31 >>> 1)
和System.out.println(i >>> 32)
的结果是不一样的
java中的移位操作相关推荐
- Java中的移位操作——Java编程思想笔记
欢迎转载,转载请务必注明出处: http://blog.csdn.net/alading2009/article/details/39968281 Java中的移位操作包括 <<(无符号左 ...
- Java中的移位操作以及基本数据类型转换成字节数组【收集】
AVA中位运算符包括: & | ~ ^ << >> >>> 一. 首先要搞清楚参与运算的数的位数: ( 联想:java的8种基本类型:byte,sho ...
- java中的移位操作详解
移位运算,这是一个陌生又熟悉的操作.陌生是指不易理解且不常用,熟悉是指"别人家的开发工程师"在代码中经常使用这种方式进行高低位的截取.哈希计算.乘除法的运算,今天,让我们一起来揭开 ...
- Java中移位操作运算符的理解
java中的移位运算符有三种: 1. <<: 左移 2. >>: 右移 3. >>>: 无符号右移 使用方法:左移就是将左边的操作数在内存中的二进制数据左移指 ...
- Java中String和byte[]间的转换浅析
Java语言中字符串类型和字节数组类型相互之间的转换经常发生,网上的分析及代码也比较多,本文将分析总结常规的byte[]和String间的转换以及十六进制String和byte[]间相互转换的原理及实 ...
- Java中性能优化的35种方法汇总
原文地址:http://www.jb51.net/article/102831.htm 前言 对程序员们来说,代码优化是一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于 ...
- 在java中补零的作用是什么_浅谈Java中的补零扩展和补符号位扩展
今天,魏屌出了一道题,题目如下: 定义一个大头序的byte[]a={-1,-2,-3,-4},转换成short[]b.问b[0]和b[1]分别是多少? 乍一看,这题不难,无非就是移位操作,再进行组合. ...
- Java中的Collection集合以及Collection集合实现类实例
Collection集合 集合概述 集合的体系特点 Collection集合常用API Collection集合的遍历方式 方式一:迭代器 方式二:foreach/增强for循环 方式三:lambda ...
- Java中实现十进制数转换为二进制的几种办法
Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2...依次循环,直到商为0结束,把余数倒 ...
- Java中实现十进制数转换为二进制
Java中实现十进制数转换为二进制 第一种:除基倒取余法 这是最符合我们平时的数学逻辑思维的,即输入一个十进制数n,每次用n除以2,把余数记下来,再用商去除以2-依次循环,直到商为0结束,把余数倒着依 ...
最新文章
- web个人主页制作代码_关于嵌入式web服务器
- 【运维】阿里云宝塔面板部署JavaWeb项目
- 图像均值迁移模糊:pyrMeanShiftFiltering()
- MD5算法了解(JAVA实现)
- 三、oracle 用户管理一
- PMCAFF微课堂 | 京东核心团队揭秘:业务增长10倍背后的敏捷开发秘籍
- 小程序picker标题_微信小程序-自定义picker选择器
- User-mode Linux (简体中文)
- android 内存检测框架,Android项目内存泄漏检测
- [Python] L1-021. 重要的话说三遍-PAT团体程序设计天梯赛GPLT
- time.c 的Java实现(从timestamp计算年月日时分秒等数值)
- Javascript:基础语法
- aruba交换机配置命令_aruba配置手册
- 计算机内部组成原理及内部子系统概述
- 游戏3D建模入门,有哪些建模软件可以选择?
- 取消开机CHKDSK磁盘检查
- 常用开源监控系统分析推荐(必备知识)|附优质监控书籍资源
- 中秋佳节,实现一个自定义任意路径嫦娥奔月程序:过什么节,代码走起
- 计算机技术身边的应用案例,计算机数据存储应用案例分析
- 粒子特效遮罩 UGUI SpriteMask
热门文章
- maven下载与安装教程
- live2d碰撞_Unity Live2D 模型(与UI)拖拽功能 实现源码
- 比特大陆招股书讲了个AI的故事,但资本市场愿意听吗?
- vgg16的网络结构
- 阿里腾讯华为在行动!程序员远程办公究竟用哪个视频会议好?
- go编译成linux可执行,Golang 编译Mac、Linux、Windows多平台可执行程序
- 防病毒网关、防火墙与防病毒软件功能及部署对比
- matlab人口增长模型拟合,matlab曲线拟合人口增长模型及其数量预测
- linux 安装pinphp遇到的“系统不支持curl!”问题
- 偷窥JCache API(JSR 107)