Разделение бинарного представления числа на группы разной длины и обратное преобразование их в числа

Рейтинг: 0Ответов: 1Опубликовано: 14.03.2023

Имеется число (ushort)26903, в бинарном виде оно выглядит следующим образом: 110100100010111, как разделить бинарный код данного числа на следующие последовательности: 11010 0100 010111 после чего перевести обратно в 10-ю систему счисления, любого из целочисленных типов данных?

Ответы

▲ 4Принят
ushort n = 0b0110100100010111; // 26903

int x = 0b0000000001111111;
int y = 0b0000011110000000;
int z = 0b1111100000000000;

int a = (n & x);
int b = (n & y) >> 7;
int c = (n & z) >> 11;

Console.WriteLine($"{a,-5} {Convert.ToString(a, 2)}");
Console.WriteLine($"{b,-5} {Convert.ToString(b, 2)}");
Console.WriteLine($"{c,-5} {Convert.ToString(c, 2)}");

n - это ваше число.
x, y, z - маски. Я думаю, хорошо видно, какая часть числа будет выделяться по этим маскам.
a, b, c - результат.

Получается дата 23 год, 2 месяц, 13 день.