static void Main() { BitArray test = new BitArray(32); Console.WriteLine(test[5]); test[5] = 1; Console.WriteLine(test[5]); Console.WriteLine(test); BitArray max = new BitArray(100000); max[99999] = 1; Console.WriteLine(max); Console.WriteLine(max & test); }
public static BigInteger BitArrayToDecimalString(BitArray arr) { BigInteger decimalResult = new BigInteger(); for (int i = 0; i < arr.Size; i++) { if (arr[i] != 1) { continue; } BigInteger powerOfTwo = new BigInteger(1); for (int j = 0; j < i; j++) { powerOfTwo *= 2; } decimalResult += powerOfTwo; } return decimalResult; }
public static BitArray operator ~(BitArray arr) { BitArray result = new BitArray(arr.Size); for (int i = 0; i < arr.Size; i++) { result[i] = arr[i] ^ 1; } return result; }
public static BitArray operator &(BitArray arr1, BitArray arr2) { int max = Math.Max(arr1.Size, arr2.Size); int min = Math.Min(arr1.Size, arr2.Size); BitArray result = new BitArray(max); for (int i = 0; i < min; i++) { result[i] = arr1[i] & arr2[i]; } return result; }
public static BitArray operator |(BitArray arr1, BitArray arr2) { int max = Math.Max(arr1.Size, arr2.Size); int min = Math.Min(arr1.Size, arr2.Size); BitArray biggerArray = arr1.Size < arr2.Size ? arr2 : arr1; BitArray result = new BitArray(max); for (int i = 0; i < min; i++) { result[i] = arr1[i] | arr2[i]; } for (int i = min; i < max; i++) { result[i] = biggerArray[i]; } return result; }