Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.72/29: Рейтинг темы: голосов - 29, средняя оценка - 4.72
82 / 78 / 34
Регистрация: 13.02.2018
Сообщений: 1,347

Перевести биты int в unsigned int

10.10.2019, 17:33. Показов 7002. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, как можно получить из int -> unsigned int, т.е. где все биты в таком же порядке, по идее тогда будет без минуса.

Пример:
int - -2147483647
unsigned int - 0

int 0
unsigned int - 2147483647
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.10.2019, 17:33
Ответы с готовыми решениями:

Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int.
Пользователь вводит двоичную строку (32 символа). Поместить двоичный код, в веденной строке, в переменную типа int и unsigned int.

Как массив char[4] перевести в unsigned int?
Есть массив из 4х char символов (4-е байта), нужно его перевести в unsigned int. Я сделал втупую: unsigned int B=0; ...

Определение типов. Приведение int к unsigned int
При таком определении 5 рассматривается как int. Как при определении указать что 5 будет именно unsigned int? unsigned int n=5; ...

56
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.10.2019, 22:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Evg Посмотреть сообщение
с точки зрения стандарта является не законным
Это вы о С++?
Цитата Сообщение от Evg Посмотреть сообщение
а потому в компиляторах это поддержано
Ну ясен пень, разработчики компиляторов не дураки, они не станут вставлять палки в колеса разработчикам С++, поэтому в С++ type punning через union работает (на большинстве современных компиляторов).
Цитата Сообщение от Evg Посмотреть сообщение
Это один из тех редких случаев, когда здравый оказался выше стандарта
Соглашусь.
Цитата Сообщение от rat0r Посмотреть сообщение
Ну с точки зрения стандарта плюсов это не очень понятно что значит.
Ну, это главное на что опираются в спорах на то, является ли каст через memcpy - UB.
Т.е. это хождение по тонкому льду, все зависит от реализации memcpy, с другой стороны так вполне может быть есть memcpy реализован в потрохах на асембли? Там же нет такого как strict aliasing и прочих проблем?
Еще с третьей стороны разработчикам компиляторов же можно делать всякие такие касты по типу type punning?
Цитата Сообщение от rat0r Посмотреть сообщение
Да ничего не значит, он никогда не использовался.
Т.е. это по сути ничего не меняет?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.10.2019, 22:37
Цитата Сообщение от Azazel-San Посмотреть сообщение
Ну, это главное на что опираются в спорах на то, является ли каст через memcpy - UB.
Я думал достаточно назвать memcpy магической функцией, которая делает то, что она делает просто потому что стандарт так говорит. А написать её на переносимом C++ невозможно.

Цитата Сообщение от Azazel-San Посмотреть сообщение
Т.е. это по сути ничего не меняет?
Я уже не помню, что именно было сутью.
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.10.2019, 22:44
Цитата Сообщение от rat0r Посмотреть сообщение
Я думал достаточно назвать memcpy магической функцией, которая делает то, что она делает просто потому что стандарт так говорит.
Ну, теперь то так можно сказать об bit_cast уж точно
Цитата Сообщение от rat0r Посмотреть сообщение
А написать её на переносимом C++ невозможно.
Так что мы имеем? Написать на С++17 что-то, что бы позволяло делать типа type punning на переносимом C++ невозможно?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.10.2019, 22:46
Цитата Сообщение от Azazel-San Посмотреть сообщение
Ну, теперь то так можно сказать об bit_cast уж точно
Ну это ясно. bit_cast должен быть constexpr, так что на основе memcpy его не напишешь.
Цитата Сообщение от Azazel-San Посмотреть сообщение
Написать на С++17 что-то, что бы позволяло делать типа type punning на переносимом C++ невозможно?
Вроде того.
1
Гвоздь Задиров
 Аватар для Folian
1719 / 1118 / 337
Регистрация: 25.01.2019
Сообщений: 2,946
12.10.2019, 22:48
Цитата Сообщение от nonedark2008 Посмотреть сообщение
вместо unsigned int вставить, скажем, float (одного размера с int), то уже будет UB.
Я, видимо, неправильно выразился. Я и не собирался получать вменяемое значение во float, например, это понятно.

Вот, кстати, утилитарный вопрос:
Считиваю я таким макаром двоично-побайтно файл "X" (ну, через char, например), добавляю мишуру и сохраняю в "Y".
И у меня есть программа "APP", которая читает таким же методом файлы типа "Y". Возможно ли, что на конечной машине программа "APP" считает "Y" неправильно, например там char развернёт и на выходе будет каша? Если да, то какова примерная вероятность такого глюка на современных пользовательских машинах?

Извиняюся за нубские вопросы
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.10.2019, 22:53
Цитата Сообщение от rat0r Посмотреть сообщение
Вроде того.
Это то, что меня интересовало, спасибо.

Добавлено через 1 минуту
Цитата Сообщение от rat0r Посмотреть сообщение
так что на основе memcpy его не напишешь
Это странно, но cppreference определяет именно реализацию через memcpy, что забавно.
Правда с указанием некой магии с добавлением constexpr.

Добавлено через 2 минуты
rat0r, а и скажи, что думаешь на счет memmove?
С его разрешением на то что объекты могут оверлапиться?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.10.2019, 22:58
Цитата Сообщение от Azazel-San Посмотреть сообщение
а и скажи, что думаешь на счет memmove?
С его разрешением на то что объекты могут оверлапиться?
Думаю, что в [basic.types] ничего про копирование себя поверх себя не написано.
1
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
12.10.2019, 23:04
Цитата Сообщение от rat0r Посмотреть сообщение
но не говорит что будет при доступе через разрешённые
Верно, не говорит. Однако в стандарте четко прописан формат целых чисел, а также известно, что:
each signed integer type has the same object representation as its corresponding unsigned integer type
У меня больше нет сил копать этот вопрос, так что оставим его в подвешенном состоянии.

Добавлено через 4 минуты
Цитата Сообщение от Azazel-San Посмотреть сообщение
хождение по тонкому льду, все зависит от реализации memcpy
Я думаю, что реализация memcpy тут не имеет никакого значения. Гарантируется, что он копирует байты из одного места в другое. Значение имеет только то, каким объектам принадлежат эти байты и что произойдет, если в взять байтовое представление некоторого объекта и перезаписать там часть байт...
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.10.2019, 23:05
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Однако в стандарте четко прописан формат целых чисел
В коде типа (я заменю std::cout на инициализацию переменной)
C++
1
2
int a = -1;
unsinged u = *reinterpret_cast<unsigned*>(&a);
это не играет никакого значения. Абсолютно. Как бы неожиданно это ни звучало.
0
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.10.2019, 23:08
Цитата Сообщение от rat0r Посмотреть сообщение
Думаю, что в [basic.types] ничего про копирование себя поверх себя не написано.
Ну, да так и есть
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Значение имеет только то, каким объектам принадлежат эти байты и что произойдет, если в взять байтовое представление некоторого объекта и перезаписать там часть байт...
Ну, это то и зависит от реализации? Не?)
0
1394 / 1023 / 325
Регистрация: 28.07.2012
Сообщений: 2,813
12.10.2019, 23:19
Цитата Сообщение от rat0r Посмотреть сообщение
это не играет никакого значения. Абсолютно. Как бы неожиданно это ни звучало.
Интересно, зачем вообще добавили в [basic.types] пункт про signed/unsigned?

Добавлено через 3 минуты
Стоило ли вот это отличие того?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.10.2019, 23:19
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Интересно, зачем вообще добавили в [basic.types] пункт про signed/unsigned?
Ну, для совместимости с C, где такое разрешено.
Поведение unsigned u = *reinterpret_cast<unsigned*>(&a); не всегда ведь не определено, а зависит от значения a.
При int a = -1; (и вообще любых отрицательных значениях) не определено, при неотрицательных значениях определено.
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.10.2019, 23:31
Цитата Сообщение от rat0r Посмотреть сообщение
При int a = -1; (и вообще любых отрицательных значениях) не определено, при неотрицательных значениях определено.
А вот тут что-то не понял мы же о unsigned говорим?
При отрицательном значении разве не добавляется что-то типа UINT_MAX + 1?
0
285 / 176 / 21
Регистрация: 16.02.2018
Сообщений: 666
12.10.2019, 23:33
Цитата Сообщение от Azazel-San Посмотреть сообщение
А вот тут что-то не понял мы же о unsigned говорим?
При отрицательном значении разве не добавляется что-то типа UINT_MAX + 1?
При reinterpret_cast-е ничего не добавляется.
1
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
12.10.2019, 23:33
Цитата Сообщение от rat0r Посмотреть сообщение
При reinterpret_cast-е ничего не добавляется.
Точно, туплю.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
13210 / 6843 / 1824
Регистрация: 18.10.2014
Сообщений: 17,306
16.10.2019, 04:36
Цитата Сообщение от nonedark2008 Посмотреть сообщение
Однако в стандарте четко прописан формат целых чисел
Это где это? До тех пор пока стандарт формально разрешает три различных представления знаковых целых чисел, ни о каком "четко прописан формат" речи быть не может.
0
║XLR8║
 Аватар для outoftime
1212 / 909 / 270
Регистрация: 25.07.2009
Сообщений: 4,361
Записей в блоге: 5
16.10.2019, 07:01
Цитата Сообщение от k0vpack Посмотреть сообщение
как можно получить из int -> unsigned int
C++
1
2
int i = ... ;
unsigned ui{i};
nonedark2008,
Цитата Сообщение от k0vpack Посмотреть сообщение
все биты в таком же порядке, по идее тогда будет без минуса.
Размер типов одинаковый. Формат представления в памяти "платформозависимый". По идее работает только в пределах платформы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.10.2019, 07:01

Как исправить ошибку невозможно преобразовать аргумент 1 из "unsigned int" в "unsigned int []"?
Ребят, срочно прошу вас помочь.. Есть ошибка (невозможно преобразовать аргумент 1 из &quot;unsigned int&quot; в &quot;unsigned int...

Надо перевести переменную типа unsigned char* в signed int и обратно
у меня есть переменная типа unsigned char*, мне нужно перевести ее в signed int , провести арифметические вычисления и затем перевести ее...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

[C++ Error] Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int'
Всем привет! Пожалуйста , помогите , почему выдает ошибку Unit2.cpp(22): E2034 Cannot convert 'int (*)(int,int *)' to 'int' ?. Мне нужно...

Перевести long long unsigned int в массив char
Подскажите, пожалуйста, как превратить число типа long long unsigned int в массив символов? Каждый символ - цифра числа в 16-значной...


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

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
сукцессия 9. Математика подлости: как растения предали грибных друзей
anaschu 27.06.2026
Статья 2. Глобальная фосфорная война: эволюционно-экономические механизмы распределения биомов Земли Введение: Экологический рынок как игра с нулевой суммой Традиционная экология долгое время. . .
сукцессия 8. Как я спорил с ИИ, которые - агенты растений и ненавистники грибов!
anaschu 27.06.2026
Статья 1. Хроники грибного восстания: как Сократов диалог разрушил академические догмы ИИ Введение: Синдром «цифрового учебника» Современные большие языковые модели (LLM) обладают колоссальным. . .
Главный вопрос моделирования сукцессии
anaschu 27.06.2026
главный вопрос. Если эктомикориза лучше добывает недоступный фосфор. И ее масса максимальна из всех. А широколиственный лес тоже имеет самую крутую биомассу. То почему не возникло их симбиоза? Это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru