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

Маска байта - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить минимальный среди элементов побочной диагонали матрицы http://www.cyberforum.ru/cpp-beginners/thread609997.html
помогите пожалуйста написать программу Дана целочисленная квадратная матрица. Определить минимальный среди элементов побочной диагонали. Для ввода, вывода и обработки матрицы использовать функции.
C++ Помоги разобравться с нескольками прогами Объясните, какие действия выполняет каждая строка в 6 программах. №1. .... int add(int n, int m) {return n + m;} int divi(int n, int m) {return n / m;} int mult(int n, int m) {return n * m;} int subt(int n, int m) {return n - m;} void main() { http://www.cyberforum.ru/cpp-beginners/thread609991.html
Работа с файлами C++
Напишите пожалуйста программу ( с комментариями по возможности ) Информация об участниках спортивных соревнований содержит: - Ф.И.О. игрока; - игровой номер; - возраст; - рост; - вес; Вывести информацию о самой молодой, рослой и легкой команде.
C++ Определить среднюю массу мальчиков и средний рост девочек
Напишите пожалуйста программу(с комментариями по возможности): "По данным сведениям об учениках класса определить среднюю массу мальчиков и средний рост девочек. Кто из учеников класса самый высокий?"
C++ Попадает ли точка с заданными координатами в полукруг http://www.cyberforum.ru/cpp-beginners/thread609977.html
Определить, попадает ли точка с заданными координатами в полукруг радиусом R, расположенный в I и II четверти. (Уравнение окружности R2=x2+y2.).
C++ operator= Такой вопрос. Есть объект. Хочу чтобы при присваивании его к чеслу выдавалось число. Например. class MyClass { short MyClass::operator=(const MyClass&My) {return 12;}; }; Main() { подробнее

Показать сообщение отдельно
Deviaphan
Делаю внезапно и красиво
Эксперт C++
1286 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
21.06.2012, 10:19     Маска байта
Тарас, я вообще не понимаю, в чём у тебя тут проблема и чем конкретно тебе нужно помочь?
Как я понял, задачи(проблемы) такие:
1. проверить, что маска непрерывна (не содержит 0 между 1)
2. Выделить 8 (или от 1 до 8) старших бит маски (ненулевых), обнулив все прочие

Я что-то упустил? Вышеозначенные проблемы решаются простеньким циклом без премудростей.

Добавлено через 13 минут
Цитата Сообщение от taras atavin Посмотреть сообщение
Решить без использования массивов.
Определяем младший единичный бит, старший бит и что между 1 нету 0
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unsigned value = ...;
unsigned position = 0;
unsigned minPos = -1;
unsigned maxPos = -1;
unsigned flag = 0;
unsigned test = 1;
for( ; position < 32; ++position )
{
     if( value & test)
     {
          if( minPos == -1 )
             minPos = position;
 
         maxPos = position;
         ++flag;
     }
 
     test <<= 1;
}
 
if( (maxPos - minPos) > flag )
    ; /// есть разрывы в маске
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru