Варианты использования реального мира побитовых операторов [закрываются]

217
задан 5 revs, 5 users 75% 2 May 2012 в 08:57
поделиться

39 ответов

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

-121--3909856-

Для этого можно использовать ключевое слово Delphi object . В основном они наследуются, но ведут себя гораздо больше как записи, чем как классы.

См. поток и описание .

-121--2298345-

Мы используем Bitwise флаги, чтобы сделать сеанс меньше для разрешения входа на нашем внутреннем веб-сайте.

0
ответ дан 23 November 2019 в 04:14
поделиться

Как что-либо может гарантировать, что у программы не закончится память, кроме произвольного удаления предмета из памяти, чтобы освободить место для новых распределений?

Что если вы действительно сохраняете ссылку на (используя) вещь, случайно выбранную для выселения? У вас скоро будет неправильное поведение.

-121--3431253-

Инструкция # setFetchSize () javadoc уже указывает:

Дает драйверу JDBC подсказку относительно количества строк, которые должны быть получены из базы данных

Драйвер действительно может свободно применять или игнорировать подсказку. Некоторые драйверы игнорируют его, некоторые применяют его напрямую, некоторым драйверам требуется больше параметров. Драйвер MySQL JDBC относится к последней категории. Если вы проверите документацию драйвера MySQL JDBC , вы увидите следующую информацию (прокручивайте 2/3 вниз до заголовка ResultSet ):

Чтобы включить эту функциональность, необходимо создать экземпляр инструкции в следующем способе:

 stmt = conn.createStatement (java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize (Integer.MIN_VALUE);

Пожалуйста, прочтите весь раздел документа, в котором также описаны оговорки к этому подходу.

Чтобы получить его для работы в Spring, вам, однако, нужно расширить/переопределить JdstartTemplate с помощью пользовательской реализации. Как я не делаю Весну я не могу подробно об этом, но теперь вы хотя бы знаете, где искать.

Удачи.

-121--3783528-

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

0
ответ дан 23 November 2019 в 04:14
поделиться

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

0
ответ дан 23 November 2019 в 04:14
поделиться

Я часто использую битовые операции для хранения комбинаций опций в одном целым числе.

int options = 0;

, где опция1 может быть определена как 1, опция2 AS 2, опция3 AS 4, Вариант 4 AS 8, Опция5 Как 16, ...

Недействительное Adtoption (опция INT) будет использовать оператор | , чтобы добавить опцию для параметров.

Boolean Hasoption (опция INT) будет использовать оператор & для проверки на опцию в параметрах.

0
ответ дан 23 November 2019 в 04:14
поделиться

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

0
ответ дан 23 November 2019 в 04:14
поделиться

Если вам не нужно решение чистопитона, GMPY2 может помочь ( GMPY2.com очень быстро).

-121--1302507-

Другим реальным миром приложения в мире базы данных является MySQL, который имеет тип DataType SET .

Битовые операторы составляют СУБД для хранения набора данных DataType. Набор может сохранить место.

Element    SET Value    Decimal Value
Travel      00000001    1
Sports      00000010    2
Dancing    00000100    4
Fine Dining   00001000  8
0
ответ дан 23 November 2019 в 04:14
поделиться

Никто еще не упоминал коллекции. Иногда у вас есть небольшая коллекция возможных значений, скажем, всего 10 или 20 возможных значений, и вы хотите сохранить некоторые из них в наборе. Конечно, Вы можете использовать обычную реализацию Set, которая, скорее всего, будет использовать хэш-таблетку. Но так как набор возможных значений настолько мал, то это просто пустая трата времени и пространства. Вместо этого, вы можете хранить набор в единственном int или long значении, что именно делает java EnumSet , если я правильно помню.

0
ответ дан 23 November 2019 в 04:14
поделиться

Очень конкретный пример, но я использовал их, чтобы сделать мой Sudoku Solver Run быстрее (у меня был соревнования с другом)

каждый столбец, строка и 3x3 был представлен в виде unsigned Ingetger и, поскольку я устанавливаю цифры, я бы отступил к участию в номере, установленного в актуальном столбце, строке и квадрате 3х3.

Это позволило очень легко увидеть, какие возможные номера я мог бы разместить в данном квадрате, так как я бы мог или вместе правую колонку, строку и квадрат 3х3, а затем не покидать меня маской, которая представляла возможные правовые значения для данной позиции.

Надеюсь, что имеет смысл.

0
ответ дан 23 November 2019 в 04:14
поделиться

Обычное использование предназначен для выравнивания, например, мне нужно, чтобы мои данные были выровнены по 4-байтовым или 16-байтовым границам. Это очень часто встречается с процессорами RISC, где невыровненная загрузка / сохранение либо дорогостоящая (потому что она запускает обработчик исключений, который затем должен исправить не -выровненная нагрузка) или вообще не допускается.

Для любого выравнивания, которое является степенью 2, следующий выровненный pos может быть вычислен следующим образом:

aligned_offset = alignment + ((current_offset - 1) & ~(alignment - 1))

Итак, в случае 4-байтового выравнивания и текущего смещения 9, тогда:

aligned_offset = 4 + ((9-1) & ~(4-1)) = 4 + (8 & 0xFFFFFFFC) = 4+ 8  = 12  

, чтобы следующие 4 байта выровненное смещение будет 12

0
ответ дан 23 November 2019 в 04:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: