java - 使用 BITwise 运算实现二维数组

标签 java arrays matrix bit-manipulation

A) int a[][]=new int[20][32];
   a[2][3]=1;
   if(a[2][3]==1)
   {
    System.out.println("true");
   }
B) int a[]=new int[20];
   a[2]=12;
   if ((a[2] & (1 << 3)) != 0)
   {
    System.out.println("true");
   }

在 A) 中,我使用 2D int 数组,我正在检查 [2,3] 是否为 1
在 B) 中,我使用 Int 索引作为第二个维度。的 mat.Here 我正在检查数组第二个元素的 3 位。 哪一个更好?为什么要考虑速度和内存?

最佳答案

我将打破自己的规则,给出一个基于意见的“答案”。

显然,您的第一个方法的可读性明显更高,但会占用更多内存。如果您在一个非常大的数组上执行此操作,并且内存有限,那么按位掩码就有意义。

我强烈建议您远离这样的“聪明”技术,除非它们很好地封装在更高级别的函数中 - 此时,对于像这样的简单示例,您将失去性能优势(如果甚至有一个) )但会提高内存效率。

当然,当第二个维度不是 32 时,效率增益将会较小(而且解决特定位所需的工作量可能会进一步飙升)。

关于java - 使用 BITwise 运算实现二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19142204/

相关文章:

java - gson.toJson返回数据类的空对象

javascript - Sort 方法将 json 排序为包含唯一值数组的 json

JavaScript:为什么我不能用 .push() 链接 Array.prototype.filter?

opengl - 具有两个不同投影矩阵的深度缓冲区

java - 比较 Java 中的两个十六进制字符串?

java - SWT 文件对话框 : Selecting directories instead of files

java - .jar 中出现 NoSuchFileException,但 Eclipse 中没有

javascript - 排序 JavaScript 数组时的奇怪行为

matlab - 多个数据集上的 PCA(主成分分析)

c - C 中动态内存分配(二维数组)的段错误