Articles of бит манипуляция

каково значение ~ 0 в C?

Я хочу получить значение INT_MIN и INT_MAX , и я пробовал ~0 и ~0 >> 1 так как самый левый бит является битом знака. Я получил их обоих -1 . Это настолько запутанно, что почему ~0 оказывается 0xffffffff и ~0 >> 1 равным 0x7fffffff ?

isGreater побитовая обработка C – наибольшее из двух чисел

Побитовая манипуляция, и я должен найти наибольшее из двух чисел. Это правила для того же: /* * isGreater – if x > y then return 1, else return 0 * Example: isGreater(4,5) = 0, isGreater(5,4) = 1 * Legal ops: ! ~ & ^ | + <> * Max ops: 24 */ Это код, который […]

что произойдет, если вы добавите большой int для плавания

это общий вопрос о том, что именно происходит, когда я передал очень большое / маленькое значение SIGNED в плавающую точку с использованием gcc 4.4. Я вижу какое-то странное поведение при выполнении кастинга. Вот некоторые примеры: MUSTBE получается с помощью этого метода: float f = (float)x; unsigned int r; memcpy(&r, &f, sizeof(unsigned int)); ./btest -f float_i2f […]

Как преобразовать 32-разрядное целое число в 64-битное значение в C

Я получаю ошибку компиляции в Код проекта, где ситуация выглядит следующим образом: typedef unsigned int U32bit; typedef unsigned long long U64bit; U32bit var; U64bit var2; var = function(); /* Function returns a 32-bit value, which is stored in var */ var2 = 100*var1; /* 100*var1 is very Big & can be stored only in U64bit […]

Как добавить бит с помощью побитового?

Я пытался выяснить, как добавлять биты (до 2 байтов), используя только следующие побитовые операции: ~ & ^ | <>. Я пробовал какое-то время без везения. Мне было интересно, знает ли кто-нибудь. int logicalByteAdd(int x, int y) { return ; }

функция для преобразования float в int (огромные целые числа)

Это университетский вопрос. Просто чтобы убедиться 🙂 Нам нужно реализовать (float) x У меня есть следующий код, который должен преобразовать целое число x в его двоичное представление с плавающей запятой, хранящееся в целых числа без знака. unsigned float_i2f(int x) { if (!x) return x; /* get sign of x */ int sign = (x>>31) & […]

Запись streamа из 9 бит значений в виде байтов в файл в C

У меня есть массив с целыми значениями от 0-511 (максимум 9 бит). Я пытаюсь записать это в файл с помощью fwrite . Например, с массивом: [257, 258, 259] Which is 100000001, 100000010, 100000011 I am trying to write 100000001100000010100000011 + extra padding of 0s to the file Но так как ограничения fwrite записываются в 1 […]

Как установить 45-й бит в 64-битном регистре?

Я пытался установить 46-й бит в регистре, который из 64 бит шириной, используя C. Как я могу настроить этот бит? В настоящее время я делаю это: uint32_t= address ; uint64_t data =1ULL << 46; Печать этого показывает, что бит 14 получает set.I не удается установить четный бит 32. Если я установил бит 32, он устанавливает […]

Проблемы округления с побитовым кодом C

Я должен следовать побитовому коду, который передает значение с плавающей точкой (упакованное в int) в значение int. Вопрос: Есть проблемы округления, поэтому он не работает в случаях, когда вход 0x80000001, например. Как я могу справиться с этим? Вот код: if(x == 0) return x; unsigned int signBit = 0; unsigned int absX = (unsigned int)x; […]

IEEE 754 Бит-манипуляция Ошибка округления

Без использования бросков или функциональности библиотек я должен использовать целое число для float с манипуляциями с битами. Ниже приведен код, над которым я сейчас работаю. Он основан на коде, который я нашел в Cast Integer для Float, используя разрывы бит-манипуляции на некоторых целых числах в C. Проблема, с которой я столкнулся, включает стандарты округления в […]