期末复习密码学时需要用到取模运算,发现 Java 中的 % 运算符并不是取模运算(Modulo Operation),而是取余运算(Complementation)。

计算方法

对于整数 a,b 来说,取模运算和取余运算的过程相同:

求整数商:c=a/b

计算模或者余数:r=a−c×b

只是取模和取余在第一步求商的方法上有所不同:取余运算在取 c 的值时,向 0 方向舍入( fix() 函数);而取模运算在计算 c 的值时,向负无穷方向舍入( floor() 函数)。

Java 示例

Java 中的取余运算是 %,而取模运算是 Math.floorMod()。

System.out.println("------Complementation------");

System.out.println(7 % 4);

System.out.println((-7) % 4);

System.out.println(7 % (-4));

System.out.println((-7) % (-4));

System.out.println();

System.out.println("------Modulo Operation------");

System.out.println(Math.floorMod(7, 4));

System.out.println(Math.floorMod(-7, 4));

System.out.println(Math.floorMod(7, -4));

System.out.println(Math.floorMod(-7, -4));

// 输出结果

------Complementation------

3

-3

3

-3

------Modulo Operation------

3

1

-1

-3

从运行结果可以看出:取模运算结果的符号和 b 一致,取余运算结果的符号和 a 一致。

注:C 和 C++ 中的 % 也为取余,Python 中的 % 为取模。

java中的取模_Java 中的取模和取余相关推荐

  1. java中integer的范围_java中integer取值范围是什么

    java中integer取值范围是什么 发布时间:2020-08-27 10:01:14 来源:亿速云 阅读:69 作者:小新 这篇文章给大家分享的是有关java中integer取值范围是什么的内容. ...

  2. java 取上界_Java中的上界通配符 - java

    我有两种通用方法来计算List元素的总和.方法的签名是 double method1(List extends Number> list)-在这里我使用通配符. double sumOfList ...

  3. java string 后几位_java中String占几个位元组

    java中String占几个位元组以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! java中String占几个位元组 J ...

  4. java i 线程不安全_java中的++i是线程安全的吗?

    java中的++i是线程安全的吗?为什么?怎么使它线程安全呢? 先说答案: 非线程安全 先说下为什么是非线程安全的? 从Java内存模型说起 Java内存模型规定了所有的便利都存储在主内存中,每个线程 ...

  5. java中的基本数据类型_Java中的基本数据类型和引用数据类型

    数据类型用于帮助确定变量可存放的一组值,以及可对这组特定值执行的操作.Java提供了在所有平台上都普遍支持的多种数据类型. 一.基本数据类型 byte:Java中最小的数据类型,在内存中占8位(bit ...

  6. java实现次方的运算_Java中对于位运算的优化以及运用与思考

    引言 随着JDK的发展以及JIT的不断优化,我们很多时候都可以写读起来易读但是看上去性能不高的代码了,编译器会帮我们优化代码.之前大学里面学单片机的时候,由于内存以及处理器性能都极其有限(可能很多时候 ...

  7. java中的集合框架_JAVA中的集合框架(上)List

    第一节 JAVA中的集合框架概述 集合的概念,现实生活中:很多事物凑在一起就是一个集合:数学中的集合:具有相同属性事物的总体:JAVA中的集合:是一种工具类,就像是容器,储存任意数量的具有共同属性的对 ...

  8. Java NIO_I/O基本概念_Java中的缓冲区(Buffer)_通道(Channel)_网络I/O

    I/O基本概念 缓冲区基础 缓冲区是I/O的基础, 进程使用read(), write()将数据读出/写入从缓冲区中; 当缓冲区写满, 内核向磁盘发出指令, 将缓冲区中数据写入磁盘中(这一步不需要CP ...

  9. java中string类相等_Java中String类的常见面试题

    第一题:==与equals()的区别 1.判断定义为String类型的s1和s2是否相等 String s1 = "abc"; String s2 = "abc" ...

  10. java内存堆和栈_java中堆,栈主要区别及内存存储

    java堆.栈.堆栈的区别 1.栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方.与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆. 2. 栈的优势是,存取速度 ...

最新文章

  1. R语言计算回归模型的SST、SSR以及SSE指标实战
  2. opencv-车牌区域提取
  3. Python 发送 email 的三种方式
  4. python面试-Python面试
  5. Nginx-Nginx配置文件详细说明
  6. UNITY 打包安卓APK
  7. 1190. 反转每对括号间的子串 golang反转字符串
  8. 关于tomcat的思考
  9. 程门立雪的故事,成语程门立雪的主人公是谁?
  10. PostgreSQL and SQLAlchemy [ubuntu]
  11. CSS中背景图片的坐标之使用说明及css中把所有背景图都放在一张图片上减少图片服务器的请求次数问题(转)...
  12. 杜克大学用13幅图告诉你人生的真谛,值得深思!
  13. win10虚拟机下载安装流程
  14. 《软件测试》[(美)Ron Patton]第三章阅读总结
  15. java框架技术路线 2019.10.3
  16. FX5U modbustcp通讯
  17. 用户标签(三):oneid与用户标签之间的相互打通 实现用户标签
  18. 2022-03-25 Python作业3
  19. Yii Framework 开发教程(32) Zii组件-GridView示例
  20. 串口、网口等自定义通信协议的问题

热门文章

  1. LeetCode-二分查找-278. 第一个错误的版本
  2. Windows任务管理器 explorer 进程
  3. R语言-时间序列-arima模型-forecast、tseries包
  4. 邮件协议(SMTP)性能测试总结(Foxmail邮箱)
  5. 使用jmeter对ActiveMQ集群性能方案进行评估--转载
  6. Java注解库_Java 注解详解
  7. jvm性能调优实战 - 34十万QPS的社交APP 如何优化GC性能提升3倍?
  8. Spring5源码 - 构建源码环境
  9. Tomcat - Tomcat 8.5.55 启动过程源码分析阶段一_init实例化Bootstrap
  10. MyBatis-21MyBatis高级结果映射【一对多映射(2种方式)】