Удобное представление чисел



Всем привет! Хочу рассказать про небольшую подсказку, которая сделает ваш код понятнее как для себя, так и для других.



Часто замечаю, что когда пишется длинная численная константа, она выглядит как куча-мала и требует внимательного прочтения:

uint64_t speed = 299792458;

double size = 0.4315973;




При беглом чтении кода преимущественно хочется хотя бы быстро определить порядок этого числа.



При программировании, например, FPGA приходится использовать задокументированные численные константы к конкретной железке. Очень часто их пишут в двоичной или шестнадцатеричной СИ:

uint32_t SPI_hex_code = 0x374F0FB4;

uint16_t SPI_bin_code = 0b1000111110110100;






Начиная с C++14 появилась поддержка бинарных литералов, которые позволяют делать вот так:

// Binary literals since C++14



// Разделение на порядки

uint64_t speed = 299'792'458;

double size = 0.431'597'3;



// Разделение на октеты (байты)

uint32_t SPI_hex_code = 0x37'4F'0F'B4;

uint16_t SPI_bin_code = 0b10001111'10110100;




На мой взгляд, группировка на порядки или байты позволяет быстро и легко воспринимать код. Как говорится, разделяй и властвуй 😉



#cpp14 #goodpractice #fun