С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
Сижу думаю
 Аватар для derwes
3 / 3 / 0
Регистрация: 11.08.2019
Сообщений: 70

Как сделать переменную на 20 бит?

22.09.2021, 23:15. Показов 1394. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как можно реализовать переменную, которая будет тратить 20 бит памяти, т.к. мне нужно больше чем short и меньше чем int для экономии памяти( у меня тратится 360мб, а ограничения 256мб) сократить невозможно. Я думал об объединении short и 4 bool, но не знаю как это реализовать.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2021, 23:15
Ответы с готовыми решениями:

Знатокам Си: как определить знаковую переменную 12 бит?
В общем, такое дело: пытаюсь играться с микросхемой трехфазного счетчика ADE7758, выводимые данные из нее разной разрядности: 8 бит/12...

Сделать в числе n циклическую перестановку четных бит на k бит вправо
Написать программу, которая позволит ввести два числа n и k типа ulong с клавиатуры, напечатать их на дисплее, и используя битовые операции...

STM8S105 и 16-бит SPI. Как сделать?
Надо читать данные с ADS7813. АЦП старый, поэтому SPI который там есть не совсем SPI, а просто выплевывает 16 бит и клок. Можно подключить...

15
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,328
Записей в блоге: 2
22.09.2021, 23:20
Цитата Сообщение от derwes Посмотреть сообщение
bool
занимает 1 байт
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
22.09.2021, 23:26
Цитата Сообщение от derwes Посмотреть сообщение
будет тратить 20 бит памяти
20 нельзя. Можно 24 или 16.

Добавлено через 4 минуты
Цитата Сообщение от alecss131 Посмотреть сообщение
занимает 1 байт
Как минимум. Может быть больше.
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,328
Записей в блоге: 2
22.09.2021, 23:27
Цитата Сообщение от DrOffset Посмотреть сообщение
Может быть больше.
Знаю, хотел дописать, но не стал, в любом случае уж точно не 1 бит
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
22.09.2021, 23:29
Цитата Сообщение от derwes Посмотреть сообщение
у меня тратится 360мб, а ограничения 256мб
Вообще тут можно предложить другие варианты, но надо знать что тратится, куда тратится, чьи ограничения, что за задача и т.д. и т.п.
Например, если это данные в какой-то поток\канал, то можно разные данные упаковывать и по 20 бит (при условии, что общая длина последовательности будет кратна байту).
0
Модератор
Эксперт Java
 Аватар для alecss131
2848 / 1356 / 404
Регистрация: 11.08.2017
Сообщений: 4,328
Записей в блоге: 2
22.09.2021, 23:35
Как вариант в функции/методы могут передаваться большие объемы данных по значению (то есть копироваться), когда по ссылке можно передавать без копирования, если не нужно менять то константная ссылка
0
Сижу думаю
 Аватар для derwes
3 / 3 / 0
Регистрация: 11.08.2019
Сообщений: 70
22.09.2021, 23:50  [ТС]
Всё это я учел, и у меня нигде не копируются данные. везде стоит константа и амперсант, в общем мне нужно объявить массив длиной 10^8, но я знаю что максимальное число меньше чем 2^21
0
 Аватар для zorggish
94 / 92 / 18
Регистрация: 10.03.2017
Сообщений: 306
23.09.2021, 00:08
derwes, создать переменную в 20 бит невозможно, так как процессор адресует как минимум 1 байт.
Опишите вашу задачу подробнее, возможно мы сможем предложить другое решение.
0
Сижу думаю
 Аватар для derwes
3 / 3 / 0
Регистрация: 11.08.2019
Сообщений: 70
23.09.2021, 00:33  [ТС]
Есть строка s длиной до 10^5, и число запрещ. слов до 10^5 и длиной до 10. нужно узнать самое раннее вхождение какого-либо слова в строку s или сказать, что его нет. Самое раннее вхождение - это расстояние от начала до последнего символа данного слова. Я тестирую, поэтому мне поручили проверить, можно ли написать эту задачу Бором. Я построил бор из запрет слов, а затем прохожусь по каждой подстроке s от i-того элемента по последний. Асимптотика - O(n*10), но память ест, т.к. различных символов до 100 от 27 до 127 по ASCII. И оно не будет проходить по памяти, т.к. тратится 10^6 на каждую вершину * 100 на её детей -> 10^8 мест в массиве, но я не очень знаю как считать кол-во памяти тратимое на массив, поэтому посчитал как 32 бит * 10^8, что около 390 мб, поэтому мне нужно сократить +- в 30%, т.к. ограничения до 256 мб.
0
19491 / 10097 / 2460
Регистрация: 30.01.2014
Сообщений: 17,805
23.09.2021, 01:12
Цитата Сообщение от derwes Посмотреть сообщение
везде стоит константа и амперсант
Прямо таки везде это делать тоже может быть неэффективно, в том числе и по памяти.

Цитата Сообщение от derwes Посмотреть сообщение
бор
А почему именно он? Я бы лучше Radix Tree использовал.
0
Вездепух
Эксперт CЭксперт С++
 Аватар для TheCalligrapher
12930 / 6798 / 1820
Регистрация: 18.10.2014
Сообщений: 17,205
23.09.2021, 01:28
Цитата Сообщение от derwes Посмотреть сообщение
Как можно реализовать переменную, которая будет тратить 20 бит памяти, т.к. мне нужно больше чем short и меньше чем int для экономии памяти
Ничего не понятно. Каким образом можно получить "экономию памяти" с одной переменной???
0
2549 / 1208 / 358
Регистрация: 30.11.2013
Сообщений: 3,826
23.09.2021, 01:58
По описанию задачи, что упирается в слово "надо" - то наверно подойдет std::bitset
0
0 / 0 / 0
Регистрация: 23.09.2021
Сообщений: 1
23.09.2021, 04:50
один бит
0
Эксперт CЭксперт С++
 Аватар для liv
5120 / 4573 / 855
Регистрация: 07.10.2015
Сообщений: 9,462
23.09.2021, 13:46
Цитата Сообщение от derwes Посмотреть сообщение
Как можно реализовать переменную, которая будет тратить 20 бит памяти
Объедините две переменные в 5 байт. Обращение к первой или второй сделайте по принципу обработки записей FAT для дискет ( ). Надеюсь, найдете самостоятельно.
1
611 / 416 / 151
Регистрация: 11.01.2019
Сообщений: 1,746
23.09.2021, 22:06
Если определенным образом упаковать переменные по 20 бит, то сэкономить память можно... за счет потери производительности.
0
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
23.09.2021, 22:34
Пожалуй, уважаемый liv предложил самое здравое решение. Я хотел вякнуть на эту тему, не успел.
Базовый массив просто char. и 2 фунциклюшки записи i-того числа и чтения. Извлекать нужное поле с помощью сдвигов "&", "|" и прочих битовых операций. Неплохое упражнение.

Добавлено через 1 минуту
Цитата Сообщение от jugu Посмотреть сообщение
за счет потери производительности.
Ну это вечная наша дилема...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2021, 22:34
Помогаю со студенческими работами здесь

Поменять местами значения бит в заданном количестве пар бит. Номера бит в парах задаются с клавиатуры
1.Разработать алгоритм ввода с клавиатуры требуемых типов данных и показать на экране их внутреннее представление в двоичной системе...

Запись бит в переменную для дисплея
Здравствуйте! Пытаюсь программировать микроконтроллер stm32f103. К нему подключён дисплей на 240 сегментов. По 60 сегментов на 4 защёлки....

Как сделать так чтобы borland paskal 32 бит был на весь экран
как сделать так чтобы у меня borland paskal на 32 битке был на весь экран или подскажите на какой можно Pacral заменить чтобы работал на...

Как сделать переменную
Ребят, у меня плохо с объяснением того что мне нужно, увы. Но я попробую объяснить, вобщем мне нужно сделать такую переменную или это с...

Как из функции сделать переменную?
Дело в том что значения функции надо в дальнейшем просуммировать.


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru