Другие языки программирования и технологии

C# программа с байтами, массивами и циклами

На языке C# написать программу, в которой
 Пользователь задает значение байта в десятичном формате. Если пользователь ввел
число больше 255, взять его по модулю 256. Если введенное значение некорректно
принять его равным 100.
 Вывести на экран введенное пользователем значение в десятичном и бинарном виде.
В бинарном виде число обязательно должно иметь 8 разрядов. Если в двоичной
форме числа меньше восьми разрядов, то нужно добавить необходимое количество
нулей слева.
 Выделить последний бит и бит, номер которого задаст пользователь красным цветом.
 Произвести циклический сдвиг битов вправо на 2 в байте, при этом выделенные биты
оставить на месте.
 Вывести на экран полученный байт в бинарном и десятичном виде, при этом в
бинарном виде выделить красным неподвижные биты.
 Сложить полученный и исходный байты. Вывести результат в бинарном и десятичном
виде. В бинарном числе разделить байты пробелом, если результат занимает больше
одного байта.

Помогите пожалуйста. Если есть рабочий пример кода - буду рад. Просто я чет вообще не понимаю, что я тут должен сделать.
class Program
{
static void ColorPrint(string s, int[] ColorIndexes)
{
for (int i=0; i<s.Length; i++)
{
if (ColorIndexes.Contains(s.Length - i -1))
Console.ForegroundColor = ConsoleColor.Red;
else
Console.ResetColor();
Console.Write(s[i]);
}
Console.WriteLine();
}

static void SetBit(ref int a, int n)
{
a |= 1 << n;
}

static void ResetBit(ref int a, int n)
{
a &= ~(1 << n);
}

static bool GetBit(int a, int n)
{
return ((a >> n) & 1) == 1;
}

static void SetRsetBit(ref int a, int n, bool v)
{
if (v)
SetBit(ref a, n);
else
ResetBit(ref a, n);
}

static string ToOctet(int a)
{
return Convert.ToString(a, 2).PadLeft(8, '0');
}

static void Main(string[] args)
{
Console.Write("Enter a number between 0 and 255: ");
int b;
if (!int.TryParse(Console.ReadLine(), out b))
b = 100;
b %= 256;
string sb = ToOctet(b);
Console.WriteLine("{0}(10)={1}(2)", b, sb);
Console.Write("Enter bit #: ");
int bn = int.Parse(Console.ReadLine()) % 8;
ColorPrint(sb, new int[] { 7, bn });
int Shifted = b >> 2;
SetRsetBit(ref Shifted, 7, GetBit(b, 7));
SetRsetBit(ref Shifted, bn, GetBit(b, bn));
Console.Write("{0}=", Shifted);
ColorPrint(ToOctet(Shifted), new int[] { 7, bn });
int r = b + Shifted;
string rs = ToOctet(r);
if (rs.Length > 8)
rs = "0000000" + rs.Insert(1, " ");
Console.WriteLine("{0}(10)={1}(2)", r, rs);
Console.ReadKey();
}
}
Юрий Сайгашов
Юрий Сайгашов
64 358
Лучший ответ
Михаил Дудыкин большое вам спасибо