1.取模 (a mod b)

System.out.println("10 mod 3 = " + Math.floorMod(10, 3));

System.out.println("10 mod (-3) = " + Math.floorMod(10, -3));

System.out.println("(-10) mod 3 = " + Math.floorMod(-10, 3));

System.out.println("(-10) mod (-3) = " + Math.floorMod(-10, -3));

结果

取模运算

结论

取模运算结果的符号与b的符号一致。

2.取余(a % b)

System.out.println("10 % 3 = " + (10 % 3));

System.out.println("10 % (-3) = " + (10 % (-3)));

System.out.println("(-10) % 3 = " + ((-10) % 3));

System.out.println("(-10) % (-3) = " + ((-10) % (-3)));

结果

取余

结论

取余运算结果的符号与a的符号一致。

3.左移(a << b)

// -----------integer--------------

System.out.println("10 << 3 = " + (10 << 3));

System.out.println("10 << (-3) = " + (10 << (-3)));

System.out.println("10 << 29 = " + (10 << 29));

System.out.println("(-10) << 3 = " + ((-10) << 3));

System.out.println("(-10) << (-3) = " + ((-10) << (-3)));

System.out.println("(-10) << 29 = " + ((-10) << 29));

// ----------- long --------------

System.out.println("10L << 3 = " + (10L << 3));

System.out.println("10L << (-3) = " + (10L << (-3)));

System.out.println("10L << 61 = " + (10L << (-3)));

System.out.println("(-10L) << 3 = " + ((-10L) << 3));

System.out.println("(-10L) << (-3) = " + ((-10L) << (-3)));

System.out.println("(-10L) << 61 = " + ((-10L) << (-3)));

结果

左移

结论

a扩大相应倍数,且结果符号保持不变右侧补0,当b<0时,取(b mod 32)或(b mod 64)。

4.右移(a >> b)

// -----------integer--------------

System.out.println("10 >> 3 = " + (10 >> 3));

System.out.println("10 >> (-3) = " + (10 >> (-3)));

System.out.println("10 >> 29 = " + (10 >> 29));

System.out.println("(-10) >> 3 = " + ((-10) >> 3));

System.out.println("(-10) >> (-3) = " + ((-10) >> (-3)));

System.out.println("(-10) >> 29 = " + ((-10) >> 29));

// ----------- long --------------

System.out.println("10L >> 3 = " + (10L >> 3));

System.out.println("10L >> (-3) = " + (10L >> (-3)));

System.out.println("10L >> 61 = " + (10L >> (-3)));

System.out.println("(-10L) >> 3 = " + ((-10L) >> 3));

System.out.println("(-10L) >> (-3) = " + ((-10L) >> (-3)));

System.out.println("(-10L) >> 61 = " + ((-10L) >> (-3)));

结果

右移

结论

a缩小相应倍数,且结果符号保持不变左侧补0,当b<0时,取(b mod 32)或(b mod 64)。

5.无符号右移(a >>> b)

// -----------integer--------------

System.out.println("10 >>> 3 = " + (10 >>> 3));

System.out.println("10 >>> (-3) = " + (10 >>> (-3)));

System.out.println("10 >>> 29 = " + (10 >>> 29));

System.out.println("(-10) >>> 3 = " + ((-10) >>> 3));

System.out.println("(-10) >>> (-3) = " + ((-10) >>> (-3)));

System.out.println("(-10) >>> 29 = " + ((-10) >>> 29));

// ----------- long --------------

System.out.println("10L >>> 3 = " + (10L >>> 3));

System.out.println("10L >>> (-3) = " + (10L >>> (-3)));

System.out.println("10L >>> 61 = " + (10L >>> (-3)));

System.out.println("(-10L) >>> 3 = " + ((-10L) >>> 3));

System.out.println("(-10L) >>> (-3) = " + ((-10L) >>> (-3)));

System.out.println("(-10L) >>> 61 = " + ((-10L) >>> (-3)));

结果

无符号右移

结论

a缩小相应倍数,左侧所有位补0,当b<0时,取(b mod 32)或(b mod 64)。

6.其他整数的位移(char、byte、short)

System.out.println("(char)10 << (-3) = " + ((char)10 << (-3)));

System.out.println("(byte)10 << (-3) = " + ((byte)10 << (-3)));

System.out.println("(short)10 << (-3) = " + ((short)10 << (-3)));

System.out.println("10 << (-3) = " + (10 << (-3)));

System.out.println("10 << 29 = " + (10 << 29));

结果

其他整数位移

结论

其他整数(char、byte、short)位移时,先转化为int,然后再按照int的位移规则进行位移,并且其结果是int类型。

7.浮点数位移(float、double)

浮点数(float、double)不支持位移操作。

java 取模 与 取余_Java中的取模、取余和位移相关推荐

  1. java double 取余_java中double除法和取余的若干注意

    1 整数除法中,除数为0,抛出一个算术异常ArithmeticException.整数取余运算中,除数为0,抛出一个ArithmeticException异常. 如: class Test { pub ...

  2. java中 byte 取值范围_java中为什么byte的取值范围是-128到+127

    概念:java中用补码表示二进制数,补码的最高位是符号位,最高位为"0"表示正数,最高位为"1"表示负数. 正数补码为其本身: 负数补码为其绝对值各位取反加1: ...

  3. java mod 函数的使用方法_Java中 % 与Math.floorMod() 区别详解

    %为取余(rem),Math.floorMod()为取模(mod) 取余取模有什么区别呢? 对于整型数a,b来说,取模运算或者取余运算的方法都是: 1.求 整数商: c = a/b; 2.计算模或者余 ...

  4. java堆和栈的区别_JAVA中堆和栈的区别

    在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配. 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配 ...

  5. java什么是栈和堆_JAVA中的栈和堆

    JAVA在程序运行时,在内存中划分5片空间进行数据的存储.分别是:1:寄存器.2:本地方法区.3:方法区.4:栈.5:堆. 基本,栈stack和堆heap这两个概念很重要,不了解清楚,后面就不用学了. ...

  6. java除数取余_Java中的相除(/)和取余(%)的实现方法|chu

    取模运算与取余运算两个概念有重叠的部分但又不完全一致.主要的区别在于对负整数进行除法运算时操作不同. 对于整形数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商 c = a / b: 2. ...

  7. java除余_Java中的相除(/)和取余(%)的实现方法

    取模运算与取余运算两个概念有重叠的部分但又不完全一致.主要的区别在于对负整数进行除法运算时操作不同. 对于整形数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商 c = a / b: 2. ...

  8. java主键后四位顺序号_JAVA中取顺序号 (转)

    JAVA中取顺序号 (转)[@more@] 在写系统的时候,经常会遇到用一个唯一的键值去票识一个对象,如数据库中一条记录的主键,文件的文件名 等.常用的做法将这个键值从1,2,3--这样一值递加下去, ...

  9. java 取整数_java中的三种取整函数

    1.Math.floor floor,英文原意:地板. Math.floor 函数是求一个浮点数的地板,就是 向下 求一个最接近它的整数,它的值肯定会小于或等于这个浮点数. Math.floor(-1 ...

最新文章

  1. PyCaret-低代码ML库使用指南
  2. Hibernate二级缓存与查询缓存的组合探究
  3. python基础练习(一)
  4. Scala 执行流程分析
  5. Protobuf序列化的原理-protobuf的基本应用
  6. AlertDialog禁止返回键
  7. linux ntfs 3g6,CentOS6挂载读写NTFS分区(ntfs-3g)
  8. ros名称、命名空间和重映射
  9. FreeSpan 和 PrefixSpan 算法学习
  10. Docker docker-compose 配置lnmp开发环境
  11. 【天线】【2】一些名词和简单概念的解释,仍然
  12. 新浪xweibo代码架构分析
  13. Bootstrap练习:百度登录框
  14. ZOJ2965 Accurately Say CocaCola! java
  15. 广西南宁机器人比赛_缤纷校园|2018年广西中小学电脑机器人竞赛开赛 南宁学子大显身手...
  16. linux硬盘的两个分区合并_linux 多分区合并(lvm)实例
  17. 科学研究:青少年熬夜更易产生反社会行为,还会延缓大脑发育
  18. 2021-2027全球与中国便携式X射线荧光光谱仪市场现状及未来发展趋势
  19. 《隐秘的角落》里笛卡尔的爱情故事,是真的吗?
  20. DriverStudio 3.x 完全版 下载

热门文章

  1. 展现工匠精神的德国“开放数据”国家行动计划
  2. math: 判断两个向量之间夹角是逆时针或顺时针
  3. 基于DDR3的串口传图帧缓存系统设计实现
  4. mysql 源码下载
  5. Android毕业项目基于Uniapp+SSM实现的移动端的家庭客栈管理系统实现的App计算机毕业论文及毕业设计题目
  6. 计算机ppt要求,计算机信息化培训总要求.ppt
  7. 5分钟,带你看完24岁60W年薪架构师的简历,上面竟然写着精通JVM
  8. J2EE----JMS
  9. 【Android 】零基础到飞升 | TouchListener PK OnTouchEvent + 多点触碰
  10. 嵌入式系统图形用户界面(GUI)的设计与研究