Запитання з тегом «bit-manipulation»

Маніпулювання окремими шматочками. Оператори, що використовуються, можуть включати побітне значення AND, АБО, XOR, NOT, зсув вліво та вправо.

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); // int(0) Віскі. Танго. …

17
Який найпростіший спосіб перевірити, чи число є ступенем 2 в 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); Хтось може підказати, як я можу це написати? Чи можете ви сказати мені хороший веб-сайт, де можна знайти такий алгоритм?

16
Найкращі практики для операцій кругового зсуву (обертання) в C ++
Оператори лівого та правого зсуву (<< і >>) вже доступні в C ++. Однак я не міг дізнатись, як я можу виконувати операції кругового зсуву або обертання. Як можна виконувати такі операції, як "Повернути вліво" та "Повернути вправо"? Тут обертається двічі вправо Initial --> 1000 0011 0100 0010 має призвести …

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 …


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 must …

30
Чи доводилося вам коли-небудь використовувати зсув бітів у реальних проектах?
Чи доводилося вам коли-небудь використовувати зсув бітів у реальних програмових проектах? У більшості (якщо не у всіх) мовах високого рівня є оператори зсуву, але коли вам насправді доведеться їх використовувати?

3
Збільшення "замаскованих" бітсет
На даний момент я складаю процес написання перелічувача дерев, де я зіткнувся з такою проблемою: Я розглядаю замасковані бітсети, тобто бітсети, де встановлені біти є підмножиною маски, тобто 0000101з маскою 1010101. Я хочу досягти збільшення бітсету, але лише стосовно маскуваних бітів. У цьому прикладі результат буде 0010000. Щоб зробити це …

5
Маніпулювати альфа-байтами кольорів Java / Android int
Якщо у мене в Java є int, який я використовую як колір Android (для малювання на полотні), як я маніпулюю лише альфа-компонентом цього int? Наприклад, як я можу використовувати операцію для цього: int myOpaqueColor = 0xFFFFFF; float factor = 0; int myTransparentColor = operationThatChangesAlphaBytes(myOpaqueColor, factor); //myTransparentColor should now = 0x00FFFFFF; …

7
Ефективно знаходити двійкові рядки з низькою відстанню Хеммінга у великому наборі
Проблема: Враховуючи великий (~ 100 мільйонів) список непідписаних 32-розрядних цілих чисел, непідписане 32-розрядне ціле числове вхідне значення та максимальну відстань Хеммінга , поверніть усіх членів списку, що знаходяться в межах вказаної відстані Хеммінга від вхідного значення. Фактична структура даних для зберігання списку відкрита, вимоги до продуктивності диктують рішення в пам'яті, …

5
Встановити конкретний біт у байті
Я намагаюся встановити біти в байтовій змінній Java. Він надає власні методи, такі як .setBit(i). Хтось знає, як я можу це усвідомити? Я можу виконати ітерацію побітово через заданий байт: if( (my_byte & (1 << i)) == 0 ){ } Однак я не можу встановити це положення на 1 або …

20
Поясніть цей фрагмент, який знаходить максимум два цілих числа, не використовуючи if-else або будь-який інший оператор порівняння?
Знайдіть максимум два числа. Ви не повинні використовувати if-else або будь-який інший оператор порівняння. Я знайшов це запитання на дошці оголошень в Інтернеті, тому я подумав, що повинен поставити в StackOverflow ПРИКЛАД Вхід: 5, 10 Вихід: 10 Я знайшов це рішення, хтось може допомогти мені зрозуміти ці рядки коду int …

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.