Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Dread1
9 / 9 / 4
Регистрация: 16.10.2012
Сообщений: 61
#1

Сравнение байтов в bitset - C++

12.11.2013, 23:15. Просмотров 2189. Ответов 25
Метки нет (Все метки)

Помогите написать функцию, которая сравнивает байты (а точнее первые 3 бита в каждом байте bitset<32>)
Просто кроме, как кейсом, ничего в голову не приходит. Получается очень громоздко. В идеальном варианте, надо расположить байты по возрастанию, одинаковые оставить на месте. Но мне, пока что нужна только функция сравнения этих байтов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 23:15
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сравнение байтов в bitset (C++):

Bitset<0>
Не на англоязычных просторах ни на наших не нашел, что же означает...

Bitset to int
Здравствуйте! вот пробую: bitset &lt;8&gt; id_paketa = 00000010; cout &lt;&lt; id_paketa...

Задача по bitset
Задача: Предположим, что существует последовательность 1,2,3,5,8,13,21....

внести char* в bitset
Всем привет! Хотел бы попросить у вас эффективный способ каким образом можно...

Что такое bitset<8>?
Можете пожалуйста подскозать что это bitset&lt;8&gt; это функция такая?

Запись bitset в bmp
Всем доброго времени суток, такая проблемка, не могу записать bitset в bmp...

25
castaway
Эксперт С++
4926 / 3033 / 453
Регистрация: 10.11.2010
Сообщений: 11,089
Записей в блоге: 10
Завершенные тесты: 1
13.11.2013, 23:53 #21
Код из 16-го поста не работает потому что тебе надо возвратить объект класса bitset, а ты возвращаешь 0, т.е. целый тип.
Логика хоть как то должна работать?
0
Dread1
9 / 9 / 4
Регистрация: 16.10.2012
Сообщений: 61
13.11.2013, 23:56  [ТС] #22
Цитата Сообщение от castaway Посмотреть сообщение
Код из 16-го поста не работает потому что тебе надо возвратить объект класса bitset, а ты возвращаешь 0, т.е. целый тип.
Логика хоть как то должна работать?
И опять же ты не прав.
а) Этот код прекрасно работает, если мы берём скажем просто int.
б) чем тебе 0 не является bitset'ом? Как бы там 0 и 1 встречаются частенько. И они могут быть bitset'ом


Ругается же вот на что
Кликните здесь для просмотра всего текста
error C2440: <function-style-cast>: невозможно преобразовать "unsigned long" в "std::bitset<_Bits>"
1> with
1> [
1> _Bits=32
1> ]
1> Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
0
Dread1
9 / 9 / 4
Регистрация: 16.10.2012
Сообщений: 61
14.11.2013, 02:17  [ТС] #23
Ну а если по теме, то может кто подсказать?
0
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
14.11.2013, 02:49 #24
Цитата Сообщение от Dread1 Посмотреть сообщение
Ну а если по теме, то может кто подсказать?
int это не только 0 и 1, это еще и 2, 3, 4, -1, -2, -3, ...
А бит может иметь значение 0 или 1, как впрочем и двоичная запись числа. Вы пытаетесь инициализировать двоичное число десятеричным, т.е. нолики и единицы чем попало.
Это сродню "Почему бы числа не инициализировать символами, ведь символы могут быть числами".
Почитайте доку: http://www.cplusplus.com/reference/bitset/bitset/ там и примеры есть. Особенно про конструктор.

Джентльмены, можно было просто тактично промолчать.
0
Dread1
9 / 9 / 4
Регистрация: 16.10.2012
Сообщений: 61
14.11.2013, 03:08  [ТС] #25
А по делу: 1)В данной ситуации ну совсем не важно что у нас возвратит функция, потому что дело с возвращающим моментом я тут не имею, ну не нужно мне в данном случае что то возвращать. Так что можно и void сделать
2) там нету про инициализацию переменной типо unsigned long
3) Проблему решил:
a) это проблема ms visual c++ 2010. В нём так же можно использовать unsigned long long и всё будет работать
б) использовав всё, как было задумано codeblocks легко компилирует и запускает данный код.

Не по теме:

А свои неуместные комментарии лучше при себе оставляйте, чем писать кому то в тему. (castaway и Avazart, обращаюсь именно к вам)

0
MrGluck
Модератор
Эксперт CЭксперт С++
7980 / 4861 / 1422
Регистрация: 29.11.2010
Сообщений: 13,234
14.11.2013, 03:21 #26
Цитата Сообщение от Dread1 Посмотреть сообщение
a) это проблема ms visual c++ 2010. В нём так же можно использовать unsigned long long и всё будет работать
unsigned long long это не проблема ms, да и вообще не проблема. На доке, что я вам дал, явно указан вариант перегруженного конструктора с данным типом в качестве параметра.

Добавлено через 3 минуты
Цитата Сообщение от Dread1 Посмотреть сообщение
А свои неуместные комментарии лучше при себе оставляйте, чем писать кому то в тему. (castaway и Avazart, обращаюсь именно к вам)
до этого они говорили по делу (Avazart вообще больше всех в этой теме писал), просто вы это не воспринимали, тем самым спровоцировав порцию комплиментов в свой адрес относительно умственных способностей.

Добавлено через 4 минуты
Цитата Сообщение от MrGluck Посмотреть сообщение
int это не только 0 и 1, это еще и 2, 3, 4, -1, -2, -3, ...
А бит может иметь значение 0 или 1, как впрочем и двоичная запись числа. Вы пытаетесь инициализировать двоичное число десятеричным, т.е. нолики и единицы чем попало.
Это сродню "Почему бы числа не инициализировать символами, ведь символы могут быть числами".
один большой self-fail.
0
14.11.2013, 03:21
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2013, 03:21
Привет! Вот еще темы с решениями:

Множество элементов типа bitset
Хочу создать множество, элементы которого будут иметь тип bitset. Подключаю...

Bitset<8388608> - Stack overflow
Пишу: bitset&lt;8388608&gt; hash; // (256^2)/2 Ошибка: Stakc overflow (ОЗУ&gt;3...

Почему не получается использовать bitset в VC++?
Никак не получается использовать bitset в VC++6 . Очень надо - двоичный вектор...

Аналог класса bitset (Стандарт C++11)
Нужно создать аналог класса Bitset (стандарт C++11) Самому удалось раскопать...


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

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

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