1/10/2014 7:30 PM, Evgeny.Panasyuk пишет:
> Я в таких случаях использую boost::uint_t<bits>::fast/least/exact и т.п.
Да не известна ж задача для чего ему битики нужны. Может алгоритм
кривой, а может именно большие размеры нужны (может ему для задачи нужны
массивы размером 2^132 и у него есть такое железо) или большая точность
или еще чего.
Posted via RSDN NNTP Server 2.1 beta
Здравствуйте, Vzhyk, Вы писали:
>> А вдруг таки битиков в числе не хватит по задачу, например?..
V>А если памяти на компе не хватит на задачу?
Дык тоже же повод юзать int16 вместо int64 там, где мона...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Я в таких случаях использую boost::uint_t<bits>::fast/least/exact и т.п.
Ну тут разные подходы возможны, как это оформить
Только я лично противник хранить без крайней нужды числа в беззнаковых типах, а так всё так же.
Но, это прямо противоречит призыву забыть о том, скока где каких битов там и байтов
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
EP>>Я в таких случаях использую boost::uint_t<bits>::fast/least/exact и т.п.
E>Ну тут разные подходы возможны, как это оформить
Ну да, как минимум нужно поставить static_assert на ожидания:
using SomeIndex = unsigned;
static_assert(sizeof(SomeIndex)*CHAR_BIT >= 32, "");
E>Только я лично противник хранить без крайней нужды числа в беззнаковых типах, а так всё так же.
А я предпочитаю unsigned by-default, так как их поведение строго определенно стандартом: при переполнении, при битовых операциях и т.п. Для индексов пригоден весь диапазон, а не половина.
Главное не смешивать singed/unsigned — но afaik у компиляторов срабатывает warning.
E>Но, это прямо противоречит призыву забыть о том, скока где каких битов там и байтов
Призыв вроде относился к указателям. Но кстати — иногда можно прилично сэкономить data layout если хранить флаги в указателях (в конце x64, или в начале по alignment)
А в общем всё зависит от требований к системе — для 90% программ можно смело делать допущение что int — 32bit two's complement, double — IEEE 754 binary64, и т.д.