Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- namespace TopTal
- {
- internal class Solution
- {
- public static void Main(string[] args)
- {
- for (var i = 0; i <= 10; i++)
- {
- var schroeppel = string.Join(", ", toNegativeBinary_Schroeppel(i).Select(x => x.ToString()));
- var iterativeLoop = string.Join(", ", toNegativeBinary(i).Select(x => x.ToString()));
- Console.WriteLine("Schroepel: " + i + " => " + schroeppel);
- Console.WriteLine("Iterative Loop: " + i + " => " + iterativeLoop);
- Console.WriteLine();
- }
- Console.WriteLine("Press any key to leave.");
- Console.ReadKey();
- }
- private static int[] toNegativeBinary_Schroeppel(int number)
- {
- const uint schroeppel = 0xAAAAAAAA;
- var result = ((number + schroeppel) ^ schroeppel);
- var bits = new BitArray(new [] {(byte) result});
- return bits.Cast<bool>().Select(bit => bit ? 1 : 0).ToArray();
- }
- private static int[] toNegativeBinary(int number)
- {
- var bits = new List<int>();
- if (number == 0)
- {
- return new[] {0};
- }
- while (number != 0)
- {
- var remainder = number % -2;
- number /= -2;
- if (remainder < 0)
- {
- number += 1;
- remainder += 2;
- }
- bits.Add(remainder);
- }
- return bits.ToArray();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement