Форум программистов, компьютерный форум 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: char areacode; char exchange; char line; http://www.cyberforum.ru/cpp-beginners/thread769669.html
C++ Cпособ передачи книги
Группа состоит из N человек. В ней каждый имеет N/2 друзей и не более К врагов. У одного из них есть книга, которую все хотят прочитать. Написать программу, реализующую способ передачи книги таким образом, чтобы она переходя от друга к другу побывала в руках у каждого не более одного раза и вернулась к владельцу.
C++ Расчет треугольника
В окно MFC вводятся длины двух сторон треугольника (1,2 строка) и величина угла между ними(3 строка). Найти третью сторону треугольника и вывести результат в четвертую строку. Предположительно должно быть так, но не знаю как сделать MFC:( #include "stdafx.h" #include "iostream" using namespace std; int _tmain(int argc, _TCHAR* argv)
C++ Произведение элементов в строках, которые не содержат нулевых элементов http://www.cyberforum.ru/cpp-beginners/thread769588.html
Задание: Реализуйте следующие задания своего варианта с использованием шаблона функции. Работа с двумерными массивами. Дана целочисленная прямоугольная матрица. Определить: Произведение элементов в тех строках, которые не содержат нулевых элементов. Вод код: #include <iostream> #include <conio.h> using namespace std; template <class proizv> // template - определеяем шаблон функции,...
C++ multimap: Сортировка значений в пределах одного ключа Добрый день. Каким образом можно отсортировать значения в пределах одного ключа в multimap? Без костылей. подробнее

Показать сообщение отдельно
ValeryS
Модератор
6375 / 4841 / 443
Регистрация: 14.02.2011
Сообщений: 16,044
26.01.2013, 23:34     Побитовые операции (программа, которая интерпретирует старшие 3 бита как некоторое число n...)
Цитата Сообщение от Valli1 Посмотреть сообщение
Я недавно узнал о простом сдвиге. И думал, что сдвинуть циклически,
нет
это то что выходит с одной стороны приходит в другую
допустим нужно сдвинуть байт (8 бит) влево циклически
в нем число
01100011
11000110 первый сдвиг пока не отличается от простого сдвига
10001101 второй единица перешла из старшего разряда в младший
00011011 третий единица перешла из старшего разряда в младший
00110110 четвертый ноль перешел из старшего разряда в младший
01101100 пятый
11011000 шестой
10110001 седьмой
01100011 восьмой получили первоначальное число
то же самое и со сдвигом вправо только из младшего значение переходит в старший
в отличии от ассемблера в С нет команды циклического сдвига
можно конечно тупо сделать это циклом проверяя младший(старший) бит

C++
1
2
3
4
5
6
7
8
9
for(int i=0;i<n;i++)
{
   if(r&0x80)
     m=0x01;
   else
     m=0;
    r=r<<1; 
    r=r|m;
}
но это долго
есть способ проще
смотри
01100011 надо сдвинуть на три влево
должно получится
00011011
видишь выделенные разряды ушли вправо
делаем так
пишу по шагам
сдвигаем влево на три разряда
01100011<< 3= 00011000
сдвигаем вправо на разность размера числа( у нас 8 бит) и на число сдвига
01100011>> (8-3)=00000011
и складываем их логически (операция ИЛИ)
00011000 | 00000011= 00011011
всего три операции(четыре если считать вычитание)
 
Текущее время: 05:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru