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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Dread1
7 / 7 / 2
Регистрация: 16.10.2012
Сообщений: 61
#1

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

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

Помогите написать функцию, которая сравнивает байты (а точнее первые 3 бита в каждом байте bitset<32>)
Просто кроме, как кейсом, ничего в голову не приходит. Получается очень громоздко. В идеальном варианте, надо расположить байты по возрастанию, одинаковые оставить на месте. Но мне, пока что нужна только функция сравнения этих байтов.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4869 / 3008 / 370
Регистрация: 10.11.2010
Сообщений: 11,059
Записей в блоге: 10
Завершенные тесты: 1
13.11.2013, 23:53     Сравнение байтов в bitset #21
Код из 16-го поста не работает потому что тебе надо возвратить объект класса bitset, а ты возвращаешь 0, т.е. целый тип.
Логика хоть как то должна работать?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dread1
7 / 7 / 2
Регистрация: 16.10.2012
Сообщений: 61
13.11.2013, 23:56  [ТС]     Сравнение байтов в bitset #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> Ни один конструктор не смог принять исходный тип, либо разрешение перегрузки конструктора неоднозначно
Dread1
7 / 7 / 2
Регистрация: 16.10.2012
Сообщений: 61
14.11.2013, 02:17  [ТС]     Сравнение байтов в bitset #23
Ну а если по теме, то может кто подсказать?
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6191 / 3443 / 421
Регистрация: 29.11.2010
Сообщений: 9,122
14.11.2013, 02:49     Сравнение байтов в bitset #24
Цитата Сообщение от Dread1 Посмотреть сообщение
Ну а если по теме, то может кто подсказать?
int это не только 0 и 1, это еще и 2, 3, 4, -1, -2, -3, ...
А бит может иметь значение 0 или 1, как впрочем и двоичная запись числа. Вы пытаетесь инициализировать двоичное число десятеричным, т.е. нолики и единицы чем попало.
Это сродню "Почему бы числа не инициализировать символами, ведь символы могут быть числами".
Почитайте доку: http://www.cplusplus.com/reference/bitset/bitset/ там и примеры есть. Особенно про конструктор.

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

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2013, 03:21     Сравнение байтов в bitset
Еще ссылки по теме:

C++ Множество элементов типа bitset
Запись bitset в bmp C++
C++ Аналог класса bitset (Стандарт C++11)
C++ Разобраться почему не компилируется код (использование std::bitset)
C++ внести char* в bitset

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт CЭксперт С++
 Аватар для MrGluck
6191 / 3443 / 421
Регистрация: 29.11.2010
Сообщений: 9,122
14.11.2013, 03:21     Сравнение байтов в bitset #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.
Yandex
Объявления
14.11.2013, 03:21     Сравнение байтов в bitset
Ответ Создать тему
Опции темы

Текущее время: 15:04. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru