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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
23.09.2008, 16:52
Ответ Создать тему
Опции темы

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