《深入Java虚拟机学习笔记》- 第12章 整数运算
Java虚拟机提供几种进行整数算术运算的操作码,他们执行基于int和long类型的运算。当byte、short和char类型值参与算术运算时,首先会将它们转换为int类型。这些操作码都不会抛出异常,溢出在这里通常可以被忽略。
整数加法
|
操作码 |
操作数 |
说明 |
|
iadd |
(无) |
从栈中弹出两个int类型数,相加,然后将所得int类型结果压回栈 |
|
ladd |
(无) |
从栈中弹出两个long类型数,相加,然后将所得long类型结果压回栈 |
将一个常量与局部变量相加
|
操作码 |
操作数 |
说明 |
|
iinc |
vindex,const |
把常量与一个位于vindex位置的int类型局部变量相加 |
|
wide |
iinc,index,const |
把常量与一个位于vindex位置的int类型局部变量相加 |
iinc可以用来给局部变量赋值-128~127之间的值。这条操作码与用于控制循环执行的变量的加减相比,效率更高。加上wide可以用来把常量的范围增大到-32768~32767。
整数减法
|
操作码 |
操作数 |
说明 |
|
isub |
(无) |
从栈中弹出两个int类型数,相减,然后将所得int类型结果压回栈 |
|
lsub |
(无) |
从栈中弹出两个long类型数,相减,然后将所得long类型结果压回栈 |
从栈顶弹出两个数,顶端的充当减数,次顶端的充当被减数。
整数乘法
|
操作码 |
操作数 |
说明 |
|
imul |
(无) |
从栈中弹出两个int类型数,相乘,然后将所得int类型结果压回栈 |
|
lmul |
(无) |
从栈中弹出两个long类型数,相乘,然后将所得long类型结果压回栈 |
整数除法
|
操作码 |
操作数 |
说明 |
|
idiv |
(无) |
从栈中弹出两个int类型数,相除,然后将所得int类型结果压回栈 |
|
ldiv |
(无) |
从栈中弹出两个long类型数,相除,然后将所得long类型结果压回栈 |
从栈顶弹出两个数,次顶端的数除以顶端的数(首先被压入栈的数作为被除数或者分子,其次被压入的数作为除数或者分母)。如果整数被0除,会抛出ArithmeticException异常。
整数取余
|
操作码 |
操作数 |
说明 |
|
irem |
(无) |
从栈中弹出两个int类型数,相减,然后将所得int类型余数压回栈 |
|
lrem |
(无) |
从栈中弹出两个long类型数,相减,然后将所得long类型余数压回栈 |
如果整数被0除,会抛出ArithmeticException异常。
|
操作码 |
操作数 |
说明 |
|
ineg |
(无) |
从栈中弹出两个int类型数,取反,然后将所得int类型结果压回栈 |
|
lneg |
(无) |
从栈中弹出两个long类型数,取反,然后将所得long类型结果压回栈 |
《深入Java虚拟机学习笔记》- 第12章 整数运算的更多相关文章
- 《深入Java虚拟机学习笔记》- 第19章 方法的调用与返回
<深入Java虚拟机学习笔记>- 第19章 方法的调用与返回
- 《深入Java虚拟机学习笔记》- 第16章 控制流
<深入Java虚拟机学习笔记>- 第16章 控制流
- 《深入Java虚拟机学习笔记》- 第17章 异常
<深入Java虚拟机学习笔记>- 第17章 异常
- 《深入Java虚拟机学习笔记》- 第13章 逻辑运算
<深入Java虚拟机学习笔记>- 第13章 浮点运算
- 《深入Java虚拟机学习笔记》- 第14章 浮点运算
<深入Java虚拟机学习笔记>- 第13章 浮点运算
- 《深入Java虚拟机学习笔记》- 第8章 连接模型
Java虚拟机学习笔记(八)连接模型
- 《深入Java虚拟机学习笔记》- 第4章 网络移动性
Java虚拟机学习笔记(四)网络移动性
- 《深入Java虚拟机学习笔记》- 第2章 平台无关
Java虚拟机学习笔记(二)平台无关
- java JDK8 学习笔记——第16章 整合数据库
第十六章 整合数据库 16.1 JDBC入门 16.1.1 JDBC简介 1.JDBC是java联机数据库的标准规范.它定义了一组标准类与接口,标准API中的接口会有数据库厂商操作,称为JDBC驱动程 ...
- Java虚拟机学习笔记——JVM垃圾回收机制
Java虚拟机学习笔记——JVM垃圾回收机制 Java垃圾回收基于虚拟机的自动内存管理机制,我们不需要为每一个对象进行释放内存,不容易发生内存泄漏和内存溢出问题. 但是自动内存管理机制不是万能药,我们 ...
随机推荐
- Objective-C中的数据类型、常量、变量、运算符与表达式
1.Objective-C中的数据类型: Objective-C中的基本数据类型有:int.char(-128-127).float.double.BOOL,Byte(0-255) Id类型相当于(等 ...
- C++中头文件相互包含与前置声明
一.类嵌套的疑问 C++头文件重复包含实在是一个令人头痛的问题,前一段时间在做一个简单的数据结构演示程序的时候,不只一次的遇到这种问题.假设我们有两个类A和B,分别定义在各自的有文件A.h和B.h中, ...
- bnuoj 27874 "Center" of [p]erimeter midpoints(计算几何)
http://www.bnuoj.com/bnuoj/problem_show.php?pid=27874 [题意]: 给你一个三角形三个顶点的坐标ABC,三角形各边取一点DEF,将三角形周长平均分割 ...
- Matlab中rand('state',sum(clock))解析
一.问题来源 来自于一份PSO代码,PSO中需要初始化粒子位置和速度. 二.问题探究 众所周知,Matlab中的rand()函数产生的是伪随机数,但一般用来也可以接受.但是,如果我们知道伪随机数的初始 ...
- Comet、SSE、Web Socket
来自<javascript高级程序设计 第三版:作者Nicholas C. Zakas>的学习笔记(十一) Comet Comet是一种更加高级的Ajax技术("服务器推送&qu ...
- [转载]获取当前日期和农历的js代码
原文地址: http://www.cnblogs.com/Gnepner/archive/2011/09/07/2169822.html 获取当前日期时间: function GetCurrentDa ...
- Howto: Deploy VC2008 apps without installing vcredist_x86.exe
There are several reasons for xcopy deployment of an application (also known as application local). ...
- hdu 4035 Maze 概率DP
题意: 有n个房间,由n-1条隧道连通起来,实际上就形成了一棵树, 从结点1出发,开始走,在每个结点i都有3种可能: 1.被杀死,回到结点1处(概率为ki) ...
- eclipse安装Log4E插件以及简单使用
一. Log4E插件下载 下载地址:http://log4e.jayefem.de/content/view/3/2/ 二.安装Log4E插件 将下载下来的压缩包解压缩,如下图所示: 解压缩生成的[d ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡
假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...