Форум программистов, компьютерный форум CyberForum.ru

битовая маска - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 233, средняя оценка - 4.85
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 15:44     битовая маска #1
как использовать битовую маску? за пример можно взять выделение k-того разряда из n-разрядного числа (в пофиг какой системе исчесления).
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2008, 15:44     битовая маска
Посмотрите здесь:

Битовая операция -> C++
Битовая сортировка! C++
C++ битовая маска
64-битовая строка C++
C++ Битовая арифметика
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 15:52     битовая маска #2
В смысле? Ну, ее можно использовать с булевыми операциями: например & или |. Любое число, по сути - битовая маска. Потом применяешь это число и булеву операцию на еще один операнд.
Ну например, чтобы взять 1-й бит числа, нужно применить к нему & и 10000000.
Вообщем, нужно просто знать двоичное представление числа и все. И булеву алгебру.
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:21  [ТС]     битовая маска #3
значит, это действительно так просто.

Добавлено через 37 секунд
благодарю
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 16:21     битовая маска #4
Цитата Сообщение от MsDos Посмотреть сообщение
значит, это действительно так просто.

Добавлено через 37 секунд
благодарю
Именно
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:24  [ТС]     битовая маска #5
а придумывается ли что-нибудь подобное на десятеричные числа?
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8501 / 2168 / 61
Регистрация: 07.03.2007
Сообщений: 10,835
Завершенные тесты: 1
23.09.2008, 16:30     битовая маска #6
а булевой алгебре неважно в какой системе счисления число, правила работают везде аналогично...
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 16:31     битовая маска #7
Хех. Какая разница? Все равно, все они в машине представленны в виде 1 и 0. Машина вообще понятия не имеет, с какими числами ты работаешь: десятичные, шестнадцатеричные...
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:38  [ТС]     битовая маска #8
хым.
120 & 10 = 2?

Добавлено через 1 минуту 14 секунд
бред, по-моему, а 12 & 3 тогда что выходит?
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8501 / 2168 / 61
Регистрация: 07.03.2007
Сообщений: 10,835
Завершенные тесты: 1
23.09.2008, 16:41     битовая маска #9
погоди, 120 & 10 = 8 => 1111000 & 1010 = 1000
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 16:45     битовая маска #10
Цитата Сообщение от WooDooMan Посмотреть сообщение
погоди, 120 & 10 = 8 => 1111000 & 1010 = 1000
Вот так, наверное, понятнее будет:
120 & 10 = 8 => 01111000 & 00001010 => 8 (00001000)
То есть один разряд у нас остается. Там, где единица в обоих числах.
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:47  [ТС]     битовая маска #11
угу, уже ясно. только мною подразумевалось как раз именно выделение разряда числа: можно ли придумать такие манипуляции с маской, чтобы именно разряд десятеричного числа выделить.
мне эта вещь очень часто нужна, а деления с остатками меня утомляют, криво как-то.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8501 / 2168 / 61
Регистрация: 07.03.2007
Сообщений: 10,835
Завершенные тесты: 1
23.09.2008, 16:47     битовая маска #12
Цитата Сообщение от Vourhey Посмотреть сообщение
Вот так, наверное, понятнее будет:
120 & 10 = 8 => 01111000 & 00001010 => 8
То есть один разряд у нас остается. Там, где единица в обоих числах.
считаю, что человеку неплохо было бы сначала все же прочесть что-нить про эту пресловутую алгебру, карты функций посмотреть, а то будет сложно что-то объяснить
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 16:49     битовая маска #13
Цитата Сообщение от WooDooMan Посмотреть сообщение
считаю, что человеку неплохо было бы сначала все же прочесть что-нить про эту пресловутую алгебру, карты функций посмотреть, а то будет сложно что-то объяснить
Согласен. А то он двойку уже получил
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:50  [ТС]     битовая маска #14
я знаю дискретную математику, булевую алгебру, интегральные схемы и т.д. и т.п.
я сейчас об алгоритмах, вы чет слишком на битах зацикливаетесь.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8501 / 2168 / 61
Регистрация: 07.03.2007
Сообщений: 10,835
Завершенные тесты: 1
23.09.2008, 16:52     битовая маска #15
ну так ты озвучь, что именно тебе надо... если биты вырезать, то без побитовых логических операций никуда...
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 16:55     битовая маска #16
Ну тут, я думаю, та же байда, только нужно выяснить, какой бит будет заполнен для каждого разряда. Каждому разряду ячейки памяти соответствует всегда один и тот же разряд числа.
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 17:01  [ТС]     битовая маска #17
меня и волнует единозначно ли будет соответствовать битовый коплекс разряду, что для меня уже ясно. но, кажется, проще выходит делить, чем расписывать маски.
Lord_Voodoo
Супер-модератор
 Аватар для Lord_Voodoo
8501 / 2168 / 61
Регистрация: 07.03.2007
Сообщений: 10,835
Завершенные тесты: 1
23.09.2008, 17:03     битовая маска #18
я когда с периферийными устройствами работал по ком-порту, там куча флагов была, и приходилось вырезать по средствам побитовых операций, и никаких не удобств не было... и ты точно знаешь, какой бит анализируешь, но раз так надо делить, кто против, можно и делением это делать...
Vourhey
Почетный модератор
6468 / 2243 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 17:04     битовая маска #19
Маски - быстрее работают просто. Делить, конечно, проще.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2008, 17:05     битовая маска
Еще ссылки по теме:

C++ Как обратиться к объекту bitset так, чтобы результатом была битовая маска
С, битовая запись C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
MsDos
 Аватар для MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 17:05  [ТС]     битовая маска #20
черт, меня осенила вполне красивая идея без применения каких-либо манипуляций!

Добавлено через 1 минуту 30 секунд
дадада, потому у меня и была такая страсть свести все к ним. но теперь все проще: я просто буду считывать посимвольно и сразу обрабатывать результат
Yandex
Объявления
23.09.2008, 17:05     битовая маска
Ответ Создать тему
Опции темы

Текущее время: 20:16. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru