Удивительно, как вы можете взять массив небольших чисел, которые представляют большее число , и преобразовать их в это большее число, и наоборот.
Я не совсем уверен, как на самом деле представлять это, но суть его заключается в следующем.
Скажем, у вас есть куча 4-битных номеров:
[ 3, 2, 5, 13, 2, 8, 1, ... ]
Подумайте, как рассчитать окончательный номер. Не совсем уверен, что я имею в виду, но то, что я пытаюсь понять, это ... Я не хочу просто добавлять цифры:
3 + 2 + 5 + 13 + 2 + 8 + 1 = 34
И я не хочу просто объединять биты.
00000011 + 00000010 + 00000101 + ...
(3) + (2) + (5) + ...
=
000000110000001000000101
Вместо этого я хочу обратить вспять следующий процесс. Скажем, у меня большое число 2147483650
(чуть больше 32-битного целого). Я хочу сохранить это целое число в массиве из 4-битных кусков. Возможно, эти куски выглядят так:
[ 3, 2, 5, 13, 2, 8, 1, ... ]
Итак, это главная цель. Как:
Но, возможно, большое целое число составляет 32 бита, а маленькие целые числа - 2 бита или, может быть, 8 бит и т. Д. В принципе общий способ сказать:
function divideLargeIntoArrayOfSmall(integer, smallBitSize) {
if (smallBitSize == 4) {
return integer.splitIntoBitChunksOf(4)
} else if (smallBitSize == 2) {
return integer.splitIntoBitChunksOf(2)
} else if (smallBitSize == 8) {
return integer.splitIntoBitChunksOf(8)
} else if (smallBitSize == 16) {
return integer.splitIntoBitChunksOf(16)
}
}
function composeIntoSingleLarge(array, itemBitSize) {
if (itemBitSize == 4) {
// array.sum(integerFromBitSize(4))
} else if (itemBitSize == 2) {
// array.sum(integerFromBitSize(2))
} else if (itemBitSize == 8) {
// array.sum(integerFromBitSize(8))
} else if (itemBitSize == 16) {
// array.sum(integerFromBitSize(16))
}
}
javascript,integer,bit-manipulation,bit,
Удивительно, как вы можете взять массив небольших чисел, которые представляют большее число , и преобразовать их в это большее число, и наоборот.
Я не совсем уверен, как на самом деле представлять это, но суть его заключается в следующем.
Скажем, у вас есть куча 4-битных номеров:
[ 3, 2, 5, 13, 2, 8, 1, ... ]
Подумайте, как рассчитать окончательный номер. Не совсем уверен, что я имею в виду, но то, что я пытаюсь понять, это ... Я не хочу просто добавлять цифры:
3 + 2 + 5 + 13 + 2 + 8 + 1 = 34
И я не хочу просто объединять биты.
00000011 + 00000010 + 00000101 + ...
(3) + (2) + (5) + ...
=
000000110000001000000101
Вместо этого я хочу обратить вспять следующий процесс. Скажем, у меня большое число 2147483650
(чуть больше 32-битного целого). Я хочу сохранить это целое число в массиве из 4-битных кусков. Возможно, эти куски выглядят так:
[ 3, 2, 5, 13, 2, 8, 1, ... ]
Итак, это главная цель. Как:
Но, возможно, большое целое число составляет 32 бита, а маленькие целые числа - 2 бита или, может быть, 8 бит и т. Д. В принципе общий способ сказать:
function divideLargeIntoArrayOfSmall(integer, smallBitSize) {
if (smallBitSize == 4) {
return integer.splitIntoBitChunksOf(4)
} else if (smallBitSize == 2) {
return integer.splitIntoBitChunksOf(2)
} else if (smallBitSize == 8) {
return integer.splitIntoBitChunksOf(8)
} else if (smallBitSize == 16) {
return integer.splitIntoBitChunksOf(16)
}
}
function composeIntoSingleLarge(array, itemBitSize) {
if (itemBitSize == 4) {
// array.sum(integerFromBitSize(4))
} else if (itemBitSize == 2) {
// array.sum(integerFromBitSize(2))
} else if (itemBitSize == 8) {
// array.sum(integerFromBitSize(8))
} else if (itemBitSize == 16) {
// array.sum(integerFromBitSize(16))
}
}
00JavaScript, целое число, бит манипуляции, бит,