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

Побитовые операции (программа, которая интерпретирует старшие 3 бита как некоторое число n...) - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание дружественных классов http://www.cyberforum.ru/cpp-beginners/thread769686.html
1. Класс Сумка (цвет, содержимое, количество предметов в сумке); 2. Класс Дама (имя); Описание предметной области – дама может положить в сумку какой-либо предмет.
C++ Неправильно работает перегруженный оператор #include <iostream> using namespace std; class PhoneNumber { friend ostream &operator << (ostream &, const PhoneNumber &); friend istream &operator >> (istream &, PhoneNumber &); private:... http://www.cyberforum.ru/cpp-beginners/thread769669.html
C++ Cпособ передачи книги
Группа состоит из N человек. В ней каждый имеет N/2 друзей и не более К врагов. У одного из них есть книга, которую все хотят прочитать. Написать программу, реализующую способ передачи книги таким...
C++ Расчет треугольника
В окно MFC вводятся длины двух сторон треугольника (1,2 строка) и величина угла между ними(3 строка). Найти третью сторону треугольника и вывести результат в четвертую строку. Предположительно...
C++ Произведение элементов в строках, которые не содержат нулевых элементов http://www.cyberforum.ru/cpp-beginners/thread769588.html
Задание: Реализуйте следующие задания своего варианта с использованием шаблона функции. Работа с двумерными массивами. Дана целочисленная прямоугольная матрица. Определить: Произведение элементов в...
C++ multimap: Сортировка значений в пределах одного ключа Добрый день. Каким образом можно отсортировать значения в пределах одного ключа в multimap? Без костылей. подробнее

Показать сообщение отдельно
Valli1
4 / 4 / 0
Регистрация: 14.09.2012
Сообщений: 64
26.01.2013, 00:42
Взял максимальное положение 1 без учета знакового бита, это t.

C++
1
2
3
while(t>x){
t=t>>1;
i++;}
Cделал проход для совпадения старшего бита рассматриваемого числа с t, для этого потребовалось i сдвигов.
C++
1
int t1=(31-i);
Вычисления номера старшего бита.
C++
1
x=x>>(t1-3);
Сдвиг для того, что-бы остались 3 искомых бита.Фактически 3х битное число.
C++
1
q::x1=q::x1>>x;
Это сдвиг разрабатываемого, числа на 3х битное число оставшее в результате предыдущего преобразования.

Добавлено через 1 час 17 минут
C++
1
2
int low3bits=x&7;//младшие 3 бита
int high3bits=x&0xE0;//старшие 3 бита
Я не знал, что так можно извлекать биты, спасибо за информацию.

Добавлено через 31 минуту
Но как оно функционирует? Чему он возвращает high?
x&7
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru