Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2018, 09:50   #1
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
Вопрос Можно ли создать свой целочисленный тип с любым количеством бит?

Подскажите кто то, пожалуйста! Мне нужно создать свой целочисленный тип с любым количеством бит, как это можно реализовать? И реально ли это вообще?
Мaкс вне форума Ответить с цитированием
Старый 05.08.2018, 10:19   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

wide_integer находится в пропозл стадии для стандарта. Пока можно "эмулировать" набором стандартных типов.
Можете взять одну из реализации https://github.com/cerevra/int/tree/master/v3 или одну из либ лдя BigInt.

П.С. Только вы уверенны, что именно это вам надо?
p51x вне форума Ответить с цитированием
Старый 05.08.2018, 10:27   #3
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Только вы уверенны, что именно это вам надо?
Вот пример: мне нужно использовать использовать числа от 0 до 8 (4 бит), и есть рядом только 2 типа - bool (0 или 1) и char (диапазон 0 - 255), не подходит, нужно свой тип.
И может быть даже не хватать самого большого типа - какой - то например "космический" масштаб, и тут остаётся либо создавать свой тип с каким - то колличеством бит, либо несколько стандартных типов "склеивать".
(Это пример!)
Цитата:
Сообщение от p51x Посмотреть сообщение
https://github.com/cerevra/int/tree/master/v3
Спасибо, попробую.
Мaкс вне форума Ответить с цитированием
Старый 05.08.2018, 10:37   #4
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Мaкс Посмотреть сообщение
мне нужно использовать использовать числа от 0 до 8 (4 бит), и есть рядом только 2 типа - bool (0 или 1) и char (диапазон 0 - 255), не подходит, нужно свой тип.
В таких случая используют маску. Вы все равно адресовать меньше байта на большинстве архитектур не сможете. А если работу с маской обернуть чуть, вот вам и свой тип.

Цитата:
Сообщение от Мaкс Посмотреть сообщение
И может быть даже не хватать самого большого типа - какой - то например "космический" масштаб, и тут остаётся либо создавать свой тип с каким - то колличеством бит, либо несколько стандартных типов "склеивать".
В любом случае будет склейка.
p51x вне форума Ответить с цитированием
Старый 05.08.2018, 10:41   #5
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Цитата:
Сообщение от Мaкс Посмотреть сообщение
мне нужно использовать использовать числа от 0 до 8 (4 бит), и есть рядом только 2 типа - bool (0 или 1) и char (диапазон 0 - 255), не подходит, нужно свой тип.
В таких случая используют маску.
Хорошо, спасибо, попробую!

Цитата:
Сообщение от p51x Посмотреть сообщение
Цитата:
Сообщение от Мaкс Посмотреть сообщение
И может быть даже не хватать самого большого типа - какой - то например "космический" масштаб, и тут остаётся либо создавать свой тип с каким - то колличеством бит, либо несколько стандартных типов "склеивать".
(Это пример!)
В любом случае будет склейка.
Понятно.
Мaкс вне форума Ответить с цитированием
Старый 06.08.2018, 11:42   #6
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Мaкс Посмотреть сообщение
Подскажите кто то, пожалуйста! Мне нужно создать свой целочисленный тип с любым количеством бит, как это можно реализовать? И реально ли это вообще?
вектор булей спасет отца русской демократии.
_Bers вне форума Ответить с цитированием
Старый 09.08.2018, 18:01   #7
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Изучал сейчас битовые структуры, и вроде работает. Ещё я слышал такое понятие как "Объединение", но пока его не изучал, а вот с битовыми структурами всё работает. Если происходит переполнение, то значение будет равно нулю.
Мaкс вне форума Ответить с цитированием
Старый 09.08.2018, 18:06   #8
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

Цитата:
Сообщение от Мaкс Посмотреть сообщение
Изучал сейчас битовые структуры, и вроде работает.
Пока вмещается в стандартные типы... попробуйте создать из 1032 бит.

Цитата:
Сообщение от Мaкс Посмотреть сообщение
Если происходит переполнение, то значение будет равно нулю.
А вот тут надо поаккуратней.
p51x вне форума Ответить с цитированием
Старый 09.08.2018, 18:16   #9
Мaкс
Форумчанин
 
Регистрация: 12.06.2018
Сообщений: 831
По умолчанию

Цитата:
Сообщение от p51x Посмотреть сообщение
Пока вмещается в стандартные типы... попробуйте создать из 1032 бит.
Попробовал. Ругается компилятор и при 512 битах... (64 байт)
Цитата:
Сообщение от p51x Посмотреть сообщение
А вот тут надо поаккуратней.
Да, мусор выдаёт при больших значениях.
---
Объединения попробую.
Изображения
Тип файла: png Снимок.PNG (5.7 Кб, 32 просмотров)
Мaкс вне форума Ответить с цитированием
Старый 09.08.2018, 19:44   #10
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от Мaкс Посмотреть сообщение
Объединения попробую.
Это вам не поможет, не теряйте зря время.
waleri вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
itemtype, можно ли создать свой словарь микроданных? Stewarts HTML и CSS 1 09.09.2015 00:03
Как создать свой тип данных в SQL? brans SQL, базы данных 4 01.12.2011 19:53
Создать свой упакованный тип в C# Никки Общие вопросы .NET 1 25.10.2009 11:49
Короткий вопрос - где можно создать свой сайт Siroga35 Свободное общение 5 22.01.2009 16:23
Как мне создать свой тип данных PilGrim Общие вопросы .NET 1 05.11.2008 19:12