![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Никто |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Получится ли использовать char в качестве целочисленного типа.Нужно создать очень большой массив данных меньше десяти,это займет много памяти.Даже при типе short.И надо ли использовать перевод типов int-str.
--------------------
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
не надо никаких преобразований. char - 8-ми битовый тип. то, что тебе нужно.
|
|||
|
||||
| Nuzur |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 4.7.2004 Репутация: нет Всего: 5 |
dumb, ну или unsigned char смотря что нуна
-------------------- Never again... |
|||
|
||||
| Никто |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Спасибо.
--------------------
|
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 8 Всего: 158 |
и, если числа действительно меньше 10, то немного усложнив обращение к элементам, можно сэкономить в 2 раза. на числа до 16 нужно только 4 бита, т.е. в одном байте у тебя уместится 2 числа.
что-то вроде того:
хм... выглядит как-то кривовато. ну да компилер оптимизнет... если числа до 10, то, в случае использования всего байта, это неважно. |
|||
|
||||
| Никто |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Два раза спасибо.
Это сообщение отредактировал(а) Никто - 3.8.2006, 18:03 --------------------
|
|||
|
||||
| Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
Если данных много, то подобные манипуляции могут существенно замедлить работу программы. Хотя подобно конечно может быть полезно для сохранения данных на диск и т.п. Да и просто интересно с теоретической . зрения Кстати. Вот навскидку ещё один вариант для получения значения из упакованного массива. Выполнится за ~6 операций, но не требует ветвления.
Это сообщение отредактировал(а) Mayk - 3.8.2006, 18:22 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
| Никто |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Что в этом случае делают << и >>,и как понять 0xF.
--------------------
|
|||
|
||||
| Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
здесь мы высчитываем смещения полубайта из которого надо брать значение. Если индекс нечётный, то shift = 4, иначе 0. Здесь это то же самое что и index/2. Здесь происходит сдвиг вправо на shift битов вправо. Если индекс был нечётным, то старший полубайт перейдёт в младший. Иначе ничего никуда не перейдёт. это оставляет первые четыре бита и зануляет все остальные. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
| Никто |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 180 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Интересно,я раньше не знал.
--------------------
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |