битными числами. Так как свои велосипеды нет времени городить, решил использовать бустовскую реализацию длинных чисел. Я нашел что есть стандартный конструктор числа через строку, но это ИМХО не удобно. А при конструкторе из числа оно режет под numeric_limit.
Соответственно вопрос - как заставить gcc/clang игнорить этот лимит или как его увеличить, знает кто?
Т.е вот это
uint512_t a(0xffffffffffffffffffffffffffffffffffffffffffff);
урезается до 128 бит (ffffffffffffffff) (соответственно тот самый numeric_limit) например (проверил тупо выводом числа и несколькими арифметическими действиями)
программа содержащая целочисленный литерал который не влезает ни в один тип это уб вроде
ну так оно должно влезать в uint512_t, не? Просто после гугления я пришел к выводу что 'проблема' в ОС/компиляторе и numeric limit да и реализуют же в крипте как-то работу с 512+ битными числами
https://www.boost.org/doc/libs/1_54_0/libs/multiprecision/doc/html/boost_multiprecision/tut/lits.html ?
о, спасибо большое, этого не находил 0-о
Это потому, что в компиляторе нет числовых литералов длиннее 128 бит. Надо инициализировать из строки.
Обсуждают сегодня