Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //You are given a sequence of bytes. Consider each byte as sequences of exactly 8 bits. You are given also a number step. Write a //program to invert the bits at positions: 1, 1 + step, 1 + 2*step, ... Print the output as a sequence of bytes.
- //Bits in each byte are counted from the leftmost to the rightmost. Bits are numbered starting from 1.
- using System;
- class BitsInverter
- {
- static void Main()
- {
- int n = int.Parse(Console.ReadLine());
- int step = int.Parse(Console.ReadLine());
- int bitToChange = 7;
- int[] numbers = new int[n];
- for (int i = 0; i < n; i++)
- {
- int number = int.Parse(Console.ReadLine());
- for (int j = 7; j >= 0; j--)
- {
- if (bitToChange >= 0)
- {
- int mask = 1 << bitToChange;
- int maskAndNumber = mask & number;
- int result = maskAndNumber >> bitToChange;
- if (result == 0)
- {
- number = number | mask;
- }
- else if (result == 1)
- {
- number = number ^ mask;
- }
- bitToChange -= step;
- }
- else
- {
- bitToChange += 8;
- break;
- }
- }
- numbers[i] = number;
- }
- foreach (int number in numbers)
- {
- Console.WriteLine(number);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment