Разве это не устанавливает верхний предел для val, который мы можем кодировать таким образом?
Он установит верхний предел для выходного сигнала, который вы можете иметь. Операция, выполненная здесь:
static uint64_t const MASK = 0x1FF;
static uint64_t const VAL_OFFSET = 10;
((val2bin(val) & MASK) << VAL_OFFSET)
даст val<<VAL_OFFSET
в качестве вывода для val < 0x1FF
и, следовательно, не превысит предел uint64_t
. Для значений, превышающих 0x1FF
, выходной сигнал будет MASK << VAL_OFFSET
, который по-прежнему не будет превышать предел uint64_t
( т.е. MASK = 511
, следовательно, выходной сигнал будет 523264 ). Это вышеупомянутый «верхний предел» на выходе , т. Е. 523264.
Я не могу понять, чего мы пытаемся достичь функциональным путем?
Даже я не могу точно понять, какую функциональность мы пытаемся достичь здесь. Может быть, вы можете предоставить дополнительный фрагмент кода вокруг этого фрагмента, и это может помочь. Я знаю, что этот ответ говорит об очевидном, но это все, что я могу сделать на данный момент.
Best.