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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 233, средняя оценка - 4.85
MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
#1

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

23.09.2008, 15:44. Просмотров 30982. Ответов 28
Метки нет (Все метки)

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

Битовая маска - C++
Как в шифровании битовыми перестановками применить маску?

битовая маска - C++
надо разработать функцию проверки правильности битовой маски. 32-х битная “маска” считается действительной, если ее двоичное...

Как обратиться к объекту bitset так, чтобы результатом была битовая маска - C++
Здравствуйте, для образовательных целей решил научится работать с bitset, как я понял класс эмулирует массив с размером элемента 1 бит....

"Битовая Маска" - C++
Всем доброго времени суток, очень долго мучаюсь на битовыми операциями, а именно над так называемой маской. Гугл не выдал мне никаких...

64-битовая строка - C++
Необходимо реализовать структуру 64-битовой строки состоящей из двух unsigned long полей, с последующей возможностью использования битовых...

Битовая сортировка! - C++
Всем привет. Нужно написать реферат по теме "Битовая сортировка". Такого в инете, а также Википедиях и прочих джерелах даже примерно не...

Битовая инверсия - C++
Доброго времени суток! Я что-то запутался с побитовой инверсией. В коде прописываю int a=5; cout<<~a<<endl; Это же...

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

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

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

Добавлено через 1 минуту 14 секунд
бред, по-моему, а 12 & 3 тогда что выходит?
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
23.09.2008, 16:41     битовая маска #9
погоди, 120 & 10 = 8 => 1111000 & 1010 = 1000
Vourhey
Почетный модератор
6477 / 2252 / 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
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:47  [ТС]     битовая маска #11
угу, уже ясно. только мною подразумевалось как раз именно выделение разряда числа: можно ли придумать такие манипуляции с маской, чтобы именно разряд десятеричного числа выделить.
мне эта вещь очень часто нужна, а деления с остатками меня утомляют, криво как-то.
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
23.09.2008, 16:47     битовая маска #12
Цитата Сообщение от Vourhey Посмотреть сообщение
Вот так, наверное, понятнее будет:
120 & 10 = 8 => 01111000 & 00001010 => 8
То есть один разряд у нас остается. Там, где единица в обоих числах.
считаю, что человеку неплохо было бы сначала все же прочесть что-нить про эту пресловутую алгебру, карты функций посмотреть, а то будет сложно что-то объяснить
Vourhey
Почетный модератор
6477 / 2252 / 123
Регистрация: 29.07.2006
Сообщений: 12,635
23.09.2008, 16:49     битовая маска #13
Цитата Сообщение от WooDooMan Посмотреть сообщение
считаю, что человеку неплохо было бы сначала все же прочесть что-нить про эту пресловутую алгебру, карты функций посмотреть, а то будет сложно что-то объяснить
Согласен. А то он двойку уже получил
MsDos
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 91
23.09.2008, 16:50  [ТС]     битовая маска #14
я знаю дискретную математику, булевую алгебру, интегральные схемы и т.д. и т.п.
я сейчас об алгоритмах, вы чет слишком на битах зацикливаетесь.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2008, 16:52     битовая маска
Еще ссылки по теме:

С, битовая запись - C++
Всем доброго времени суток, после 3 дней поиска информации решил попытать счастье, задав вопрос у форумчан. так же читал много подобных...

Битовая операция -> - C++
Что делает операция -> К примеру, есть структура: struct BIT{ unsigned int cod1:3; :1;...

Битовая арифметика - C++
Почему при: int myVar = 15, mask = 0x00 00 00 01; //выделил разряды printf("%d", myVar & mask); Я получаю -1? Конечно, я мог бы...

собрать число , битовая арифметика - C++
Помогите пожалуйста, а то с битовой арифметикой проблемы, получаю из color числа его каналы по следующей формуле R = (color >> 16) &...

Битовая операция с отрицательным числом - C++
Есть такой код int main() { int k = 12; cout << (k & -k); return 0; } Выводит этот код


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

Или воспользуйтесь поиском по форуму:
Lord_Voodoo
Супер-модератор
8584 / 2184 / 61
Регистрация: 07.03.2007
Сообщений: 10,868
Завершенные тесты: 1
23.09.2008, 16:52     битовая маска #15
ну так ты озвучь, что именно тебе надо... если биты вырезать, то без побитовых логических операций никуда...
Yandex
Объявления
23.09.2008, 16:52     битовая маска
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru