|
|
|
|
|
для: sim5
(23.05.2010 в 14:08)
| | Вот сейчас как раз и читаю википедию в поисках задач, решаемых битовыми операциями :) | |
|
|
|
|
|
|
|
для: neadekvat
(23.05.2010 в 14:01)
| | В первом случае вас интересует результат (не один разряд из двух операндов не даст 1), во втором случае истинны ли оба операнда (в данном примере не один из них не равен 0). В первом случае вам будет возвращено значение аккумулятора, во втором флагового регистра. Что вас удивляет?
Если вы к первому добавите условие if(1 & 2), то получите значение флогового регистра.
Все нужно использовать по назначению, от потребности задачи. | |
|
|
|
|
|
|
|
для: neadekvat
(23.05.2010 в 01:17)
| | Понял, где вчера лохонулся. Гуглил по запросу "поразрядные операции", сейчас попробовал по "битовые операции" - уже другое дело :) | |
|
|
|
|
|
|
|
для: sim5
(23.05.2010 в 13:43)
| | Так, то есть, если переводить на колхозный язык, то вы имеете в виду, что побитовые операции используются не только для получения результатов после смещения и сопоставления битов, но и как обычные логические операции.
Но, например, (1 & 2) даст ложь, а (1 && 2) даст правду. Значит, использовать побитовые операции в качестве логических надо при каких-то определенных условиях? | |
|
|
|
|
|
|
|
для: neadekvat
(23.05.2010 в 12:21)
| | > Но может ли такое понадобиться в web-программировании?
Очень часто встречаются упакованные поля (или набор флагов) в бинарных файлах. Соответственно, в web-программировании, такое может понадобиться если работаете с бинарными файлами напрямую.
IP-адрес — на самом деле число размером 4 байта. Для его представления в "человеческий" вид, можно использовать поразрядные операции. А операции с масками вообще не имеют смысла без побитовых операторов.
Битовые операции часто требуются при реализации криптографических и хеш-аглоритмов. | |
|
|
|
|
|
|
|
для: neadekvat
(23.05.2010 в 13:21)
| | Вы либо сути не понимаете операций, либо вас сбивает столку то, что эти операции в мануале обозначены как побитовые. Но не интерпритатор в конечном итоге решает задачи, а регистры процессора. И выполнять бутут они не задачу &, а команду прошитую в процессоре. И если вас просто интересует, что получится в итоге при:
7 & 5
то просессор просто соеденит (он собственно при очень многих операциях так поступает), регистр А со значеним 7, с регистром В со значеним 5, как n элементов 2И, и выполнить сразу операцию, поместив ее результат в регистор А. При этом будут установлены и соответствующие флаги в флаговом регистре. Все, забирайте результат.
Побитовость для машины, это лирика, пока вы явно не запросите - а что будет во втором разряде после этой операции.
Лигические операции, это не обязательно бегать по битам слова и выяснять чего там в нем.
PS. Я из-за этого "Но может ли такое понадобиться в web-программировании?", только и заговорил.
Вы постоянно используете логические опрерции: &&, ||, например, сюда же и if, только в этом случае интерпретатор интересует не результат операции как таковой, а значение флагового регистра. То что назвали в мануале "побитовыми операциями" вычисляется также, но тут важен сам результат операции, хотя если поставлено условие, то опять флаг ее. | |
|
|
|
|
|
|
|
для: sim5
(23.05.2010 в 13:05)
| | Вот так всегда - думаешь, что уже хоть как-то разобрался, а по факту нюансов выше крыши.
Но все порязрядные операции, что я в гуле находил (в основном учебники по С/С++) рассказывали именно об этом (т.е. побитовое сравнение) | |
|
|
|
|
|
|
|
для: neadekvat
(23.05.2010 в 12:59)
| | Легкость не обязательно главный критерий. Да и "разрядных", это не обязательно по-разрядно в прямом смысле слова. | |
|
|
|
|
|
|
|
для: Trianon
(23.05.2010 в 12:40)
| | Сотруднику Макдональдса вряд ли :) Однако я тот вопрос задал не с мыслью "Ну и зачем мне с этим разбираться?", а с мыслью "Вот я разобрался - где я могу это применить". Притом не разрядные операции ради разрядных операций, а, возможно, более быстрое или легкое решение в каких-то ситуациях. | |
|
|
|
|
|
|
|
для: neadekvat
(23.05.2010 в 12:21)
| | >Но может ли такое понадобиться в web-программировании?
Может ли повредить бридность сотруднику Макдональдса? | |
|
|
|
|