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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 30, средняя оценка - 4.60
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
#1

Разворот порядка битов в байте - C++

08.09.2012, 15:13. Просмотров 4690. Ответов 10
Метки нет (Все метки)

С клавиатуры вводится целое число размером в 1 байт (unsigned char = 0..255). Необходимо развернуть порядок битов наоборот в этом числе и вывести полученное число на экран в следующей строке.
Входные данные
Целое число размером в 1 байт.
Выходные данные
Целое число размером в 1 байт с развернутым порядком битов.
Пример входных данных
1
Пример выходных данных
128
(буду очень благодарен тому кто поможет сделал перевод в биты но допереть как в 10 систему перевести не пойму)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.09.2012, 15:13
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Разворот порядка битов в байте (C++):

Разворот порядка битов в байте - C++
С клавиатуры вводится целое число размером в 1 байт (unsigned char = 0..255). Необходимо развернуть порядок битов наоборот в этом числе и...

Циклический сдвиг битов в байте - C++
Привет. Мне нужно в байте (unsigned char) произвести циклический сдвиг. Как я понимаю >> и << это не циклический сдвиг. Но как сделать...

Зеркальное отображение битов в байте - C++
Всем привет, нужно сделать так, чтобы биты в байте отобразились зеркально, а затем вывести эту бодягу в восьмеричной системе, можно...

Циклический сдвиг битов в байте влево или вправо - C++
Кто-нибудь пробовал реализовать такую задачу на С++. Если да, то какой алгоритм? Например, если 32 << 10, то в результате должны...

изменения порядка битов в 2-ч байтовом целом - C++
Доброго времени суток!:) Решаю следующую задачу, нужно ввести число, а затем поменять порядок битов в нем на обратный, так вот что-то не...

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

10
outoftime
║XLR8║
703 / 603 / 74
Регистрация: 25.07.2009
Сообщений: 3,086
Записей в блоге: 5
08.09.2012, 15:24 #2
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main () {
    unsigned char n = 23, res = 0; // inital number
    for (int i = 0; i < 8; res = res | ( (n >> i) & 1 ? 1 << (7 - i) : 0), ++i);
    std::cout << int(res) << std::endl;
}
Зачем перевод в разные системы счисления?
0
Kastaneda
Jesus loves me
Эксперт С++
4728 / 2932 / 242
Регистрация: 12.12.2009
Сообщений: 7,442
Записей в блоге: 2
Завершенные тесты: 1
08.09.2012, 15:31 #3
А зачем тут циклический сдвиг? Нужно порядок байт ревертнуть.
0
kazak
3051 / 2372 / 160
Регистрация: 11.03.2009
Сообщений: 5,437
Завершенные тесты: 1
08.09.2012, 15:32 #4
А нужно непременно в десятичную систему переводить? Не проще ли битовые операции использовать?
0
I.M.
566 / 549 / 5
Регистрация: 16.12.2011
Сообщений: 1,389
08.09.2012, 15:33 #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
 
typedef unsigned char uchar;
 
uchar reverse(uchar input)
{
   uchar output = 0;
   const int uchar_size = 8; 
  
   for(int i = 0; i!=uchar_size; ++i)
   {
      output |= ((input>>i)&1)<<(uchar_size-1-i);  
   }
   return output;
}         
 
int main()
{
   uchar value = 1;
   std::cout << (int)reverse(value) << std::endl;
    
   return 0;
}
1
outoftime
║XLR8║
703 / 603 / 74
Регистрация: 25.07.2009
Сообщений: 3,086
Записей в блоге: 5
08.09.2012, 15:35 #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
А зачем тут циклический сдвиг? Нужно порядок байт ревертнуть.
Смотрим внимательно:
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main () {
    unsigned char n = 23, res = 0; // inital number
    for (int i = 0; i < 8; res = res | ( (n >> i) & 1 ? 1 << (7 - i) : 0), ++i);
    std::cout << int(res) << std::endl;
}
0
Kastaneda
08.09.2012, 15:39
  #7

Не по теме:

Цитата Сообщение от outoftime Посмотреть сообщение
Смотрим внимательно:
ну как бы этот код отличается от кода во втором посте.

0
nameless
Эксперт С++
334 / 298 / 14
Регистрация: 16.06.2009
Сообщений: 486
08.09.2012, 15:47 #8
RESTY,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
 
unsigned char ReverseBits(unsigned char number) {
   number = (number & 0x55) << 1 | (number & 0xAA) >> 1;
   number = (number & 0x33) << 2 | (number & 0xCC) >> 2;
   number = (number & 0x0F) << 4 | (number & 0xF0) >> 4;
   
   return number;
}
 
int main() {
   unsigned char number = 1;
   std::cout << static_cast <int>(ReverseBits(number)) << std::endl;
}
http://liveworkspace.org/code/0ed5f6c6583496bd9c703ec4a04f0a7d

Генри Уоррена почитайте "Алгоритмические трюки для программистов"
2
RESTY
5 / 5 / 0
Регистрация: 30.05.2012
Сообщений: 89
08.09.2012, 15:52  [ТС] #9
спасибо то что нужно)
0
outoftime
║XLR8║
703 / 603 / 74
Регистрация: 25.07.2009
Сообщений: 3,086
Записей в блоге: 5
08.09.2012, 16:05 #10
nameless, у меня короче вышло
0
Toshkarik
1148 / 865 / 51
Регистрация: 03.08.2011
Сообщений: 2,404
Завершенные тесты: 1
08.09.2012, 16:08 #11
outoftime, короткий код не значит быстрый и оптимальный.
0
08.09.2012, 16:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.09.2012, 16:08
Привет! Вот еще темы с ответами:

Операции с побитовыми операторами (число 8 битов и число 9 битов) - C++
Доброго времени суток всем ! Прошу ответа на несложный вопрос (...по крайней мере мне так кажется...) Есть функция: ...

Разворот текста - C++
Господа,понимаю что это все просто но допетрить до конца не могу суть задачи в том что есть текстовый файл,в нем строчка,а то и две...

Разворот матрицы на 90 градусов - C++
Заполнить матрицу случайными числами. Развернуть матрицу на 90o по часовой стрелке. Добавлено через 46 секунд ПОМОГИТЕ СДЕЛАТЬ НЕ...

Боковой разворот матрицы - C++
Дана матрица HxW H – произвольное W – произвольное Задача: поменять столбцы в обратном порядке. Это действие оформить в виде функции. ...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

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