이해하려고 노력 :인라인 함수
inline xint dtally(xint x)
{
xint t = 0;
while (x) t += 1 << ((x % 10) * 6), x /= 10;
return t;
}
난 그냥하고 변수 t
에 저장 계산해서이 기능 즉하게 알고 싶어합니다.
이해하려고 노력 :인라인 함수
inline xint dtally(xint x)
{
xint t = 0;
while (x) t += 1 << ((x % 10) * 6), x /= 10;
return t;
}
난 그냥하고 변수 t
에 저장 계산해서이 기능 즉하게 알고 싶어합니다.
이 코드는 x
의 기본 10 진수를 t
에 6 개의 비트 필드로 구분하여 계산합니다.
각 시프트 길이는 6의 배수입니다. 따라서 숫자가 0이면 시프트는 0이고, 숫자가 1이면 시프트는 6, 숫자가 9이면 시프트는 54입니다.
6이 사용 된 이유는 64 비트 이하로 적합하다고 생각됩니다.
x의 10 진수를 가능한 10 진수로 계산합니다. 즉, 출력의 각 6 비트 폭 필드는 그 오프셋 (offset)에 대응하는 숫자의 카운트를 x에 보관 유지합니다. 비트 0-5는 0의 수, 비트 6-11은 1의 수, 12-17은 2의 수 등을 보유합니다. – tvanfosson
"이 기능을 만드는 이유"란 무엇을 의미합니까? –
@Deduplicator - 예, 그냥 가서 확인했습니다. 댓글이 취소되었습니다. –
xint는 무엇입니까? 우리가 그 세부 사항을 안다면, 우리는 당신의 질문에 대답 할 수 있습니다. – user3629249