Dusan Paulovic Ответов: 2

Разбить байт на 8 чисел


Здравствуйте, можно ли хранить 8 целых чисел в диапазоне от 0 до 31 в одном байте?
Я понимаю, как разбить одно 32-битное целое число на 4 байта с помощью битового сдвига,
но я не знаю, возможно ли то же самое с одним байтом.
Один байт может содержать 1 число до 255. В случае 2-х чисел,
Я предполагаю, что их может быть до 127... в случае 8, похоже, до 31
все должно быть по-настоящему.

Или я совершенно не прав и это невозможно?

Я хотел бы иметь что-то вроде:

int getAt(int pos, byte b) // pos is 0 - 7
{
   // extraction code
}

void setAt(int pos, byte & b) // pos is 0 - 7
{
   // insertion code
}


Что я уже пробовал:

Я привязался только к поиску в интернете и сдвигу вроде b > & gt; 1, но без удачи.

Gerry Schmitz

Вы можете хранить 8 целых чисел в одном байте, но они будут ограничены 0 или 1.

Однако это может быть ключом к чему-то "высшему".

например, 111111, "Небесная" гексаграмма; составленная из двух небесных триграмм: 111; и так далее.

2 Ответов

Рейтинг:
2

Chris Losinger

конечно, вы можете хранить 8 целых чисел в байте. но эти целые числа могут иметь только значения 0 или 1.


Рейтинг:
0

Patrice T

Цитата:
Или я совершенно не прав и это невозможно?

Это невозможно.
Чтобы закодировать число между 0-31, вам нужно ровно 5 битов, поэтому, чтобы закодировать 8 из них таким образом, чтобы вы могли их получить, вам нужно 40 битов.