|
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 96
|
|
битовая маска23.09.2008, 15:44. Показов 45192. Ответов 28
Метки нет (Все метки)
как использовать битовую маску? за пример можно взять выделение k-того разряда из n-разрядного числа (в пофиг какой системе исчесления).
0
|
|
| 23.09.2008, 15:44 | |
|
Ответы с готовыми решениями:
28
битовая маска
Как обратиться к объекту bitset так, чтобы результатом была битовая маска |
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
| 23.09.2008, 17:08 | |
|
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
||
| 23.09.2008, 17:09 | ||
|
0
|
||
|
5 / 5 / 1
Регистрация: 13.05.2008
Сообщений: 96
|
|
| 23.09.2008, 17:16 [ТС] | |
|
ну, можно много еще чего придумать.
мне нужно обрабатывать числа, вводимые с клавиатуры, с каждым разрядом работать отдельно.
0
|
|
|
42 / 42 / 4
Регистрация: 14.09.2008
Сообщений: 683
|
|
| 05.10.2008, 12:34 | |
|
Ну а еще проще:
Под 1 байт отводится 8 бит максимальное число 11111111 = 286331153 Соответсвенно 2 байта 8*2 = 16(единиц максимальное число) 3 байта 8*3 = 24(единиц максимальное число) 4 байта 8*4 = 32(единиц максимальное число) 120 = 1111000(тут 7 бит из 8 ) поэтому недостающие биты пишем 0 120 = 01111000 но в идеале первой всегда идет 1. 10 = 1010(4 из 8 ) 10 = 00001010 120 и 10 влазят в 1 байт поэтому недостающие биты ставим в 0. Если бы это было число по больше использующее к примеру 2 байта(16 бит) 0000000111111111 тут 9 единиц значит уже больше 1 байта поэтому в 0 мы выставляем все остальное до 16 бит. & - операция оставляет 1 там где бит = 1 в обоих числах. 01111000 & 00001010 --------- 00001000 Тут и на глаз видно, что 1 только в одном месте остается. Получаем 1000 в 16 системе. Если что не так написал, не ругайте))) Я это понимаю именно так)
0
|
|
|
Почетный модератор
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
|
|
| 05.10.2008, 12:41 | |
|
TGrey[WoLf], все это хорошо и красиво,просто беда в том, что ему не бит нужен, а разряд в числе... мы поначалу ему тоже про булевую алгебру рассказывали
0
|
|
|
4y4z
|
||
| 12.02.2010, 13:20 | ||
|
Итак следующая проблема: есть char buff[24]; Согласно спецификации это строка вида AAABBBCCDDEFGHIJKLLLLMM. ААА - 3-байтовое значение, где младшие 23 бита это целое неотрицательное число и т.д. Как правильно выделить эти самые младшие биты из числа? Корректен ли в данном случае такое вариант: uint value = (buff[0]) | (buff[1] << 8) | (buff[2] << 16); Или же нужно накладывать битовые маски на целочисленное представление этих самых трех байт? ТО есть к примеру для E (целое неотрицательное число от 0 до 127) из этого же самого буфера получение младших 7 бит будет так: E = E&01111111; |
||
|
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
|
|
| 12.02.2010, 16:05 | |
|
Все правильно сделали. Просто под конец нужна маска. Ведь Вы хотите затереть 24-ый бит.
тогда Value|=buff[0]|buff[1]<<8|buff[2]<<16; Value&=0x7FFFFF; 7FFFFF это 23 бита установленые в 1 и 24-ый в 0 В данном случае легко использовать 16 ричное представление, для определения маски.
0
|
|
|
|
|
| 12.02.2010, 17:19 | |
|
MsDos, я правильно понимаю, что постановка задачи следующая: например есть число в десятичной записи 1234567. Нужно выделить в этой десятичной записи третий с конца десятичный разряд (т.е. 5). Так чтоли? Если так, что через битовые операции этого не сделать
0
|
|
|
3 / 3 / 2
Регистрация: 25.04.2014
Сообщений: 87
|
||||||
| 11.03.2015, 13:16 | ||||||
|
Помогите разобраться с битовой маской, есть вектор F[10] равный в dec 137 hex 89 bin 10001001 Применяю сдвиг и маску
cout <<bitset<8>((F[10]>> 4)& 00000111); Получаю: 00001000 Я не понимаю как так выходит, если я сдвинул на четыре вправо остается 00001000 применяем маску 00000111 должно было выйти 00000000 Что я не верно делаю??? скидываю свой код если нужен.
Исправил косяк был в использовании двоичного кода надо было вместо 00000111 писать 7
0
|
||||||
| 11.03.2015, 13:16 | |
|
Битовая сортировка!
Битовая арифметика Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|