【发布时间】:2015-07-23 11:59:44
【问题描述】:
我花了很长时间了解程序员如何利用 C# 数组中数据的快速二进制表示的优势,但我就是不明白。
例如,如果我有 2 个数组 A 和 B 来存储 0/1 数据。在正常情况下,我们会这样做:
bool flag=true;
int[] A = new int[10] { 1, 0, 0, 0, 1, 1, 0, 1, 0, 0 };
int[] B = new int[10] { 1, 1, 1, 0, 0, 1, 0, 1, 0, 0 };
// For comparing the first 5 bits :
for(int i=0;i<5;i++)
if (A[i] != B[i])
{
flag = false;
break;
}
// Accessing the i*th* positions is :
A[7]=1;
int x=B[5];
如果我需要重复此代码数千次怎么办?甚至数组非常大?直接的答案是将数据表示为位压缩数组并应用位运算或位掩码等内容。
我的问题是如何在 c# 中切换到二进制世界?对于更准确的问题,如何使用二进制表示和按位操作以非常有效的方式重写上面的代码?非常感谢您提供演示代码的答案。
[更新] 我正在寻找一个答案,它利用将二进制数据存储为字节或位并使用移位位来访问/比较数组
【问题讨论】:
-
从正文和问题
tags来看,在我看来你已经知道这个问题的答案了。我们不是代码编写服务 -
如果我知道答案,那为什么还要问?@MickyDuncan
-
奇怪,您的 other question 也符合这些要求。 (我看到已被删除)
-
自 3 周以来我一直在努力解决这个问题@MickyDuncan
标签: c# arrays optimization bit-manipulation bit-shift