2014-11-29 2 views
0

Я изучаю следующие функции:Пытаясь понять инлайн функцию

inline xint dtally(xint x) 
{ 
    xint t = 0; 
    while (x) t += 1 << ((x % 10) * 6), x /= 10; 
    return t; 
} 

Я просто хочу знать, что делает эту функцию то есть, который вычисляет и хранящуюся в переменной t.

+3

Что вы подразумеваете под «что делает эту функцию»? –

+0

@Deduplicator - да, просто пошел и проверил. Комментарий отменен. –

+1

Что такое xint? Если бы мы знали эту деталь, мы могли бы ответить на ваш вопрос. – user3629249

ответ

2

Этот номер подсчитывает количество базовых 10 цифр в числе x в t, разделенных полями бит шириной 6 бит.

Обратите внимание, что каждая длина сдвига кратная 6. Поэтому, если цифра равна 0, сдвиг равен 0, если цифра равна 1, сдвиг равен 6, если цифра равна 9, сдвиг равен 54 и так далее.

Причина использования 6 Я думаю, что он подходит под 64 бит.

+0

. Количество каждой возможной базы 10 цифр в x, то есть каждое 6-разрядное поле на выходе должно удерживайте счетчик цифр, соответствующих этому смещению по x. Биты 0-5 содержат число 0, бит 6-11 - число 1, 12-17 - количество 2 и т. Д. – tvanfosson

Смежные вопросы