vitus_wagner: My photo 2005 (Default)
vitus_wagner ([personal profile] vitus_wagner) wrote2016-04-05 10:38 am

Про целочисленные типы

Интересно, что количество бит в самом большом целочисленном типе, поддерживаемом современными компиляторами (int128_t), уже сравнялось с максимальным значением самого маленького (signed char).

Это к вопросу о том, как интерпретировать x << -1.

Мне пришли в голову две «естественные» интерпретации:

1. x << -1 = x >> 1.
2. x << -1 = x<< ((usigned что-то)-1) = x << 255 или x << 65535 и так далее.

В обоих случаях 1 << -1 = 0.

Но не все компиляторы с этим согласны. (понятно что по стандарту это undefined behavoir).
livelight: (Default)

[personal profile] livelight 2016-04-06 10:01 am (UTC)(link)
Если минимальный квант адресации больше 8 бит, то тип int8_t получить вообще не получится, кроме как в битовых структурах. Но такое по указателю в operator >> точно не передашь никак.