Я считал о Microsoft определенный суффикс "i64" для целочисленных констант. Я хочу сделать Неподписанный сдвиг к ULONGLONG.
ULONGLONG bigNum64 = 0x800000000000000i64 >> myval;
В нормальном C я использовал бы суффикс "U", например, подобные 32 битовых операции будут
ULONG bigNum32 = 0x80000000U >> myval;
Я НЕ хочу 2's дополнительное расширение знака к propogate через высокие биты. Я хочу НЕПОДПИСАННЫЙ сдвиг на числе константы на 64 бита. Я думаю, что мой первый оператор собирается сделать сдвиг СО ЗНАКОМ ПРАВИЛЬНО.
Я попробовал 0x800000000000000i64U
и 0x800000000000000u64
но получил ошибки компилятора.
Вы можете использовать суффикс ull
, который является стандартным (C99 и C++0x) способом указания целочисленного литерала unsigned long long
, а long long
имеет как минимум 64 бита.