Результаты поиска по запросу "bit-manipulation"

2 ответа

, Вы должны использовать это:

рал следующую программу: #include <stdio.h> int main(void) { int a = 3; int b = 42; printf("a = %d\nb = %d\n", a, b); printf("Exchanging values.\n"); a ^= b ^= a ^= b; printf("a = %d\nb = %d\n", a, b); return 0; }и это нормально. Когда я пытаюсь ...

4 ответа

Это хорошо известный и узнаваемый шаблон, поэтому большинство компиляторов точно знают, как его оптимизировать, чтобы сделать его более переносимым. (Это мое внутреннее предчувствие, только подкрепленное личным опытом составителей, которые меня удивляют. Я буду готов признать, что я здесь не прав.)

аюсь написать функцию без ответвлений, чтобы вернуть MAX или MIN двух целых чисел, не прибегая к if (или? :). С помощьюобычная техника [https://stackoverflow.com/questions/227383/how-do-i-programmatically-return-the-max-of-two-integers-without] Я ...

2 ответа

@PeterCordes Иногда код становится более понятным, когда вы пишете константы в виде двоичного файла. Это не тот случай, я признаю :-).

у преобразовать 8-битное целое число в массив размером 8 с каждым значением, содержащим битовое значение целого числа. Например: у меня естьint8_t x = 8; Я хочу преобразовать это вint8_t array_x = {0,0,0,0,1,0,0,0}; Это должно быть сделано ...

ТОП публикаций

6 ответов

Да все время. Как эти макросы для упаковки и распаковки 3-пространственной координаты в / из 32-разрядного целого числа:

огда-нибудь приходилось пользоватьсясдвиг немного [http://en.wikipedia.org/wiki/Bit_shift#Bit_shifts]в реальных проектах программирования? В большинстве (если не во всех) языках высокого уровня есть операторы сдвига, но когда вам действительно ...

4 ответа

@Lindydancer: Я тоже так думал. Однако я проверил это на GCC и компиляторе Intel и не смог найти разницу в производительности между a = -a, a * = - 1 и a * = - 1.0. Так что я думаю, что все они оптимизированы одинаковым образом компилятором.

самый быстрый способ перевернуть знак двойного (или плавать) в C? Я подумал, что прямой доступ к знаку был бы самым быстрым, и нашел следующее: double a = 5.0; *(__int64*)&a |= 0x8000000000000000; // a = -5.0 float b = 3.0; *(int*)&b |= ...

0 ответов

 приводит к ненулевому значению

отаю над созданием логической функции правого сдвига в C, используя только побитовые операторы. Вот что у меня есть: int logical_right_shift(int x, int n) { int size = sizeof(int); // size of int // arithmetic shifts to create logical shift, ...

11 ответов

Оли прав! Я хочу разделить на числа, которые не являются степенями 2

могу реализовать деление, используя побитовые операторы (а не просто деление на степени 2)? Опишите это подробно.

8 ответов

Вы можете использовать AND на нем и проверить, совпадает ли результат с вами и с?

я есть четыре флага Current = 0x1 Past = 0x2 Future = 0x4 All = 0x7Скажем, я получаю два флага: Прошлое и БудущееsetFlags(PAST | FUTURE)). Как я могу сказать, еслиPast в нем? Точно так же, как я могу сказать, чтоCurrent не в этом? Таким образом, ...

2 ответа

Ну, я использовал много буста (потоки, файловая система, рандом, математика), поэтому я, вероятно, попытаюсь поближе познакомиться с классом Spirit.

должен сделать, это открыть файл в двоичном режиме, который содержит хранимые данные, которые предназначены для интерпретации как целые числа. Я видел другие примеры, такие какStackoverflow-Чтение байтов целого размера из массива char ...

3 ответа

JavaScript: преобразование 52-битного целого в 20-битное и 32-битное целое

В других языках, которые могут представлять 64-битные целые числа, это можно сделать очень легко ... Как сохранить 64-битное целое число в двух 32-битных целых и ...