Вопросы с тегом «bit-manipulation»

Манипуляция отдельными битами. Используемые операторы могут включать в себя побитовое И, ИЛИ, XOR, НЕ, сдвиг влево и сдвиг вправо.

16
Лучшие практики для операций кругового сдвига (поворота) в C ++
Операторы сдвига влево и вправо (<< и >>) уже доступны в C ++. Однако я не мог понять, как я могу выполнять операции кругового сдвига или поворота. Как можно выполнять такие операции, как «Повернуть влево» и «Повернуть вправо»? Здесь дважды вращается вправо Initial --> 1000 0011 0100 0010 должен привести …

1
Операции приоритета и битовой маски
Я столкнулся с (казалось бы) очень странным случаем. Возьмите число 2 ( 0b10) и замаскируйте его с помощью 1 ( 0b01) Это должно произвести 0b00что эквивалентно 0. Однако здесь появляется г-н Шредингер: var_dump(0b10 & 0b01); // int(0) var_dump(0b10 & 0b01 == 0); // int(0) var_dump(0b10 & 0b01 != 0); // …

17
Какой самый простой способ проверить, является ли число в C ++ степенью двойки?
Мне нужна такая функция: // return true iff 'n' is a power of 2, e.g. // is_power_of_2(16) => true is_power_of_2(3) => false bool is_power_of_2(int n); Кто-нибудь может подсказать, как я мог это написать? Можете ли вы назвать мне хороший веб-сайт, где можно найти такой алгоритм?

3
Что такое CHAR_BIT?
Цитата из кода для вычисления целочисленного абсолютного значения (абс) без перехода из http://graphics.stanford.edu/~seander/bithacks.html : int v; // we want to find the absolute value of v unsigned int r; // the result goes here int const mask = v >> sizeof(int) * CHAR_BIT - 1; r = (v + mask) …

7
C / C ++: принудительный порядок и выравнивание битовых полей
Я читал, что порядок битовых полей в структуре зависит от платформы. Что если я использую различные параметры упаковки для конкретного компилятора, будут ли эти данные гарантии храниться в правильном порядке по мере их написания? Например: struct Message { unsigned int version : 3; unsigned int type : 1; unsigned int …



30
Приходилось ли вам когда-нибудь использовать битовый сдвиг в реальных проектах?
Приходилось ли вам когда-нибудь использовать битовый сдвиг в реальных проектах программирования? В большинстве (если не во всех) языках высокого уровня есть операторы сдвига, но когда вам действительно нужно их использовать?

10
Есть ли элегантный и быстрый способ проверить, что 1-бит целого числа находится в непрерывной области?
Мне нужно проверить, образуют ли позиции (от 0 до 31 для 32-битного целого числа) с битовым значением 1 непрерывную область. Например: 00111111000000000000000000000000 is contiguous 00111111000000000000000011000000 is not contiguous Я хочу, чтобы этот тест, то есть какая-то функция has_contiguous_one_bits(int), был переносимым. Один из очевидных способов - перебрать позиции, чтобы найти первый …

11
Вычитание / добавление насыщения для беззнаковых байтов
Представьте, что у меня есть два байта без знака bи x. Мне нужно рассчитать bsubкак b - xи baddкак b + x. Однако я не хочу, чтобы во время этих операций происходило переполнение / переполнение. Например (псевдокод): b = 3; x = 5; bsub = b - x; // bsub …

5
Управление альфа-байтами цвета Java / Android int
Если у меня есть int в Java, который я использую в качестве цвета Android (для рисования на холсте), как мне управлять только альфа-компонентом этого int? Например, как я могу использовать операцию для этого: int myOpaqueColor = 0xFFFFFF; float factor = 0; int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor); //myTransparentColor should now = …

7
Эффективный поиск двоичных строк с малым расстоянием Хэмминга в большом наборе
Проблема: Учитывая большой (~ 100 миллионов) список 32-битных целых чисел без знака, входное 32-битное целочисленное значение без знака и максимальное расстояние Хэмминга , верните все элементы списка, которые находятся в пределах указанного расстояния Хэмминга входного значения. Фактическая структура данных для хранения списка открыта, требования к производительности диктуют решение в памяти, …

8
Вычитание упакованных 8-битных целых чисел в 64-битное целое на 1 параллельно, SWAR без аппаратного SIMD
Если у меня есть 64-разрядное целое число, которое я интерпретирую как массив упакованных 8-разрядных целых чисел с 8 элементами. Мне нужно вычесть константу 1из каждого упакованного целого числа при обработке переполнения без влияния одного элемента на результат другого элемента. У меня есть этот код на данный момент, и он работает, …
77 c++  c  bit-manipulation  simd  swar 

6
(x | y) - y, почему это не может быть просто x или даже `x | 0`
Я читал код ядра, и в одном месте я видел выражение внутри ifоператора, как if (value == (SPINLOCK_SHARED | 1) - 1) { ............ } где SPINLOCK_SHARED = 0x80000000предопределенная константа. Интересно, зачем нам (SPINLOCK_SHARED | 1) - 1- для преобразования типов? результат выражения будет 80000000 - так же, как 0x80000000, …

3
Для заданных двух целых чисел A и B найдите пару чисел X и Y такую, что A = X * Y и B = X xor Y
Я борюсь с этой проблемой, которую нашел в конкурентной книге по программированию, но без решения, как это сделать. Для заданных двух целых чисел A и B (может соответствовать 64-разрядному целочисленному типу), где A нечетно, найдите пару чисел X и Y, такую, что A = X * Y и B = …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.