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

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

1382
Что такое операторы побитового сдвига (bit-shift) и как они работают?

Я пытался изучать C в свободное время, и другие языки (C #, Java и т. Д.) Имеют ту же концепцию (и часто те же операторы) ... Что мне интересно, на уровне ядра, что делает бит сдвига ( <<, >>, >>>) делать, какие проблемы она может помочь решить, и какие подводные камни...

434
Что такое «Дополнение 2»?

Я в компьютерных системах и , конечно, были изо всех сил , в частности, с дополнением до двух . Я хочу понять это, но все, что я прочитал, не принесло мне картину. Я прочитал статью в Википедии и другие статьи, включая мой учебник . Поэтому я хотел начать эту вики- публикацию сообщества, чтобы...

301
Извлечение битов с одним умножением

Я видел интересную технику, использованную в ответе на другой вопрос , и хотел бы понять ее немного лучше. Нам дано 64-разрядное целое число без знака, и нас интересуют следующие биты: 1.......2.......3.......4.......5.......6.......7.......8....... В частности, мы хотели бы переместить их в...

201
Наиболее распространенные побитовые операции C # над перечислениями

На всю жизнь я не могу вспомнить, как устанавливать, удалять, переключать или тестировать немного в битовом поле. Либо я не уверен, либо я их перепутал, потому что они мне редко нужны. Так что было бы неплохо иметь "бит-шпаргалку". Например: flags = flags | FlagsEnum.Bit4; // Set bit 4. или if...

193
Использование побитового ИЛИ 0 для создания числа

Мой коллега наткнулся на метод для получения чисел с плавающей запятой с использованием побитового или: var a = 13.6 | 0; //a == 13 Мы говорили об этом и задавались вопросом несколько вещей. Как это работает? Наша теория заключалась в том, что использование такого оператора приводит число к целому...

192
Что означает двойная тильда (~~) в Java?

Просматривая исходный код Guava, я наткнулся на следующий фрагмент кода (часть реализации hashCodeдля внутреннего класса CartesianSet): int adjust = size() - 1; for (int i = 0; i < axes.size(); i++) { adjust *= 31; adjust = ~~adjust; // in GWT, we have to deal with integer overflow carefully }...

190
Округление до следующей степени 2

Я хочу написать функцию, которая возвращает ближайшую следующую степень 2 числа. Например, если мой ввод 789, вывод должен быть 1024. Есть ли способ достичь этого без использования циклов, а только с помощью некоторых побитовых...

172
C # int to byte []

Мне нужно преобразовать intв byte[]один из способов сделать это заключается в использовании BitConverter.GetBytes(). Но я не уверен, что это соответствует следующей спецификации: Целое число со знаком XDR - это 32-разрядное значение, которое кодирует целое число в диапазоне...

153
~ x + ~ y == ~ (x + y) всегда ложно?

Этот код всегда оценивается как ложный? Обе переменные являются двумя знаковыми дополнениями. ~x + ~y == ~(x + y) Я чувствую, что должно быть какое-то число, которое удовлетворяет условиям. Я пытался проверить числа между, но так -5000и 5000не достиг равенства. Есть ли способ установить уравнение,...

150
Объясните использование битового вектора для определения того, являются ли все символы уникальными

Я не понимаю, как будет работать битовый вектор (не слишком знаком с битовыми векторами). Вот код, данный. Может кто-нибудь, пожалуйста, проведите меня через это? public static boolean isUniqueChars(String str) { int checker = 0; for (int i = 0; i < str.length(); ++i) { int val = str.charAt(i) -...

149
'and' (логическое) против '&' (побитовое) - Почему разница в поведении со списками и массивами numpy?

Чем объясняется разница в поведении логических и побитовых операций над списками и массивами NumPy? Я не понимаю, как правильно использовать &vs andв Python, как показано в следующих примерах. mylist1 = [True, True, True, False, True] mylist2 = [False, True, False, True, False] >>>...

146
В чем идея ^ = 32, которая преобразует строчные буквы в прописные и наоборот?

Я решал некоторые проблемы с codeforces. Обычно я сначала проверяю, является ли символ верхней или нижней английской буквой, затем вычитаю или добавляю, 32чтобы преобразовать его в соответствующую букву. Но я нашел, что кто-то ^= 32делает то же самое. Вот: char foo = 'a'; foo ^= 32; char bar = 'A';...

145
Почему XOR является стандартным способом объединения хэшей?

Скажем, у вас есть два хэша H(A)иH(B) , и вы хотите , чтобы объединить их. Я читал, что хороший способ объединить два хеша для XORних, например XOR( H(A), H(B) ). Лучшее объяснение, которое я нашел, кратко затронуто здесь рекомендациям хэш-функции : XOR двух чисел с примерно случайным...