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

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.64
Dread1
7 / 7 / 2
Регистрация: 16.10.2012
Сообщений: 61
12.11.2013, 23:15     Сравнение байтов в bitset #1
Помогите написать функцию, которая сравнивает байты (а точнее первые 3 бита в каждом байте bitset<32>)
Просто кроме, как кейсом, ничего в голову не приходит. Получается очень громоздко. В идеальном варианте, надо расположить байты по возрастанию, одинаковые оставить на месте. Но мне, пока что нужна только функция сравнения этих байтов.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.11.2013, 23:15     Сравнение байтов в bitset
Посмотрите здесь:

Почему не получается использовать bitset в VC++? C++
C++ Сложение двоичных чисел, представленных в bitset
Задача по bitset C++
динамический bitset возможно ли такое? C++
C++ Bitset to int
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4841 / 2980 / 367
Регистрация: 10.11.2010
Сообщений: 11,012
Записей в блоге: 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
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
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)

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

Или воспользуйтесь поиском по форуму:
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,405
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
Ответ Создать тему
Опции темы

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