[经验分享] 位运算与取模运算的效率对比

[复制链接]
2227|27
 楼主| linfelix 发表于 2023-9-29 12:00 | 显示全部楼层 |阅读模式
  1. package com.test;

  2. public class Main {

  3.     public static void main(String[] args) {
  4.         bit();
  5.         modulus();
  6.     }

  7.     public static void bit() {
  8.         int number = 100 * 1000;// 分别取值10万、100万、1000万、1亿
  9.         int a = 1;
  10.         long start = System.currentTimeMillis();
  11.         for (int i = number; i > 0; i++) {
  12.             a = a & i;
  13.         }
  14.         long end = System.currentTimeMillis();
  15.         System.out.println("位运算耗时: " + (end - start));
  16.     }

  17.     public static void modulus() {
  18.         int number = 10000 * 10;// 分别取值10万、100万、1000万、1亿
  19.         int a = 1;
  20.         long start = System.currentTimeMillis();
  21.         for (int i = number; i > 0; i++) {
  22.             a %= i;
  23.         }
  24.         long end = System.currentTimeMillis();
  25.         System.out.println("取模运算耗时: " + (end - start));
  26.     }
  27. }

执行结果:

位运算耗时: 1004取模运算耗时: 20445
maqianqu 发表于 2023-10-5 22:10 | 显示全部楼层
位运算通常比取模运算更快。位运算是对二进制数进行的运算,可以直接在内存中进行,而取模运算需要进行除法运算,会涉及到浮点数运算,因此运算速度相对较慢。
robincotton 发表于 2023-10-5 22:25 | 显示全部楼层
位运算和取模运算的效率对比取决于具体的应用场景
tabmone 发表于 2023-10-6 22:26 | 显示全部楼层
位运算通常比取模运算更节省内存。位运算只需要进行简单的位操作,不需要保存除法运算的结果,而取模运算需要保存除法运算的结果,因此内存占用较大。
cemaj 发表于 2023-10-6 22:45 | 显示全部楼层
取模运算在处理一些问题时可能是必要的
jimmhu 发表于 2023-10-7 14:19 | 显示全部楼层
位运算主要用于对二进制数据的处理和优化,如位掩码、位操作等。而取模运算主要用于数值计算和逻辑判断,如判断奇偶性、计算哈希值等。
wilhelmina2 发表于 2023-10-7 22:17 | 显示全部楼层
位运算是基于底层硬件的位操作,可以在一个操作中同时处理多个位
eefas 发表于 2023-10-8 17:58 | 显示全部楼层
在进行模运算时,如果除数较大,可以使用取模运算来避免除法运算的精度问题。
janewood 发表于 2023-10-8 18:15 | 显示全部楼层
位运算和取模运算都是计算机中常用的运算符,但它们的效率不同。
juliestephen 发表于 2023-10-8 19:33 | 显示全部楼层
位运算比取模运算更快,因为位运算只需要对二进制数进行操作,而取模运算需要对十进制数进行操作
olivem55arlowe 发表于 2023-10-8 21:03 | 显示全部楼层
位运算通常比普通的数**算更快,因为它可以直接操作二进制位,而不需要进行实际的数学计算。但是,位运算的复杂性可能增加代码阅读的困难度。
iyoum 发表于 2023-10-8 22:40 | 显示全部楼层
位运算和取模运算在效率上有明显的差异。位运算是对二进制数进行操作的运算,而取模运算是对整数进行求余的运算。
单片小菜 发表于 2023-10-10 10:01 | 显示全部楼层
直接位运算,取模基本上不用的,很少使用。
gygp 发表于 2023-10-10 19:53 | 显示全部楼层
取模运算通常比较耗时,特别是在一些较大的数值范围内。
loutin 发表于 2023-10-10 21:11 | 显示全部楼层
取模运算可能会更加方便和直观              
 楼主| linfelix 发表于 2023-10-10 21:47 | 显示全部楼层
位运算直接对内存数据进行操作,不需要转成十进制,因此处理速度非常快。而取模运算则需要将数据转换为十进制,再进行运算,因此处理速度相对较慢。
fengm 发表于 2023-10-11 22:10 | 显示全部楼层
在处理大数据量、需要高精度计算或需要快速执行的场合,位运算更为适用;而在处理小数据量、需要快速执行或需要简单计算的场合,取模运算更为适用。
pmp 发表于 2023-10-12 20:29 | 显示全部楼层
位运算在很多场景下可以替代一些常见的数**算,从而提高程序的执行效率。
backlugin 发表于 2023-10-12 21:30 | 显示全部楼层
位运算(&)比取模运算(%)具有更高的效率
deliahouse887 发表于 2023-10-12 22:51 | 显示全部楼层
实际的性能可能会因编程语言、编译器优化和其他因素而有所不同
您需要登录后才可以回帖 登录 | 注册

本版积分规则

42

主题

1533

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部