Csharp/C#教程:BitArray – 移位分享


BitArray – 移位

我有一个System.Collections.BitArray数组(~3000项),我想将所有位向左移动1.然而,集合似乎不支持该操作(即bitArray << 1不工作,那里不是方法)。 有关如何做到这一点的任何想法?

谢谢!

这个简单的代码片段显示了一种手动方式。 bitArray[0]的值被覆盖:

 //... bitArray is the BitArray instance for (int i = 1; i < bitArray.Count; i++) { bitArray[i - 1] = bitArray[i]; } bitArray[bitArray.Count - 1] = false // or true, whatever you want to shift in 

使这个扩展方法应该不是什么大问题。

System.Numerics.BigInteger确实支持位移。

我不确定如何提高效率,但这种扩展方法可以完成这项工作

 public static BitArray ShiftRight(this BitArray instance) { return new BitArray(new bool[] { false }.Concat(instance.Cast().Take(instance.Length - 1)).ToArray()); } 

我最简单的方法是将BitArray转换为支持按位移位和返回的BigInt或类似结构。 现在,.Net 4中的内置BigInteger不支持我认为的转变,但还有其他一些,如Mono的实现。

重新创建bitarray作为ulong[]的包装器; 通过小于64的数字实现位移是一块蛋糕,这将比其他建议的方法花费更少的时间并杀死更少的北极熊。 通过警惕“可能会落到最后的位”,如果你想保留它们,你可能需要增长数组(或者不是,如果它们为零,你说不存在的元素隐含地保持为零)。

上述就是C#学习教程:BitArray – 移位分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注---计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/959507.html

(0)
上一篇 2021年11月23日
下一篇 2021年11月23日

精彩推荐