Re[7]: Не пойму что с InterlockedCompareExchange
От: Vzhyk  
Дата: 10.01.14 16:45
Оценка: +1
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
http://rsdn.org/File/27746/bel.gif
Re[7]: Не пойму что с InterlockedCompareExchange
От: Erop Россия  
Дата: 10.01.14 17:14
Оценка:
Здравствуйте, Vzhyk, Вы писали:

>> А вдруг таки битиков в числе не хватит по задачу, например?..

V>А если памяти на компе не хватит на задачу?
Дык тоже же повод юзать int16 вместо int64 там, где мона...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[7]: Не пойму что с InterlockedCompareExchange
От: Erop Россия  
Дата: 10.01.14 17:15
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Я в таких случаях использую boost::uint_t<bits>::fast/least/exact и т.п.


Ну тут разные подходы возможны, как это оформить
Только я лично противник хранить без крайней нужды числа в беззнаковых типах, а так всё так же.
Но, это прямо противоречит призыву забыть о том, скока где каких битов там и байтов
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[8]: Не пойму что с InterlockedCompareExchange
От: Evgeny.Panasyuk Россия  
Дата: 10.01.14 20:17
Оценка:
Здравствуйте, 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, и т.д.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.