2016-12-07 11 views
1

값 범위를 나타내는 방법을 찾고 있는데, 0 - 18446744073709551615 8 바이트 미만을 사용합니다.적은 비트를 사용하는 부호없는 qword (64 비트)의 값 범위는 무엇입니까?

나는 할 수있는 방법을 생각하려고 노력했지만 아무 것도 작동하지 않습니다. 이론 상으로는 다음과 같습니다. 1 바이트를 사용하여 2 바이트 이상의 비트 시퀀스를 나타냅니다. 그러나 2 바이트에는 65536 개의 서로 다른 비트 조합 수가 있지만 단일 바이트는 0-255 (256 조합)의 값 범위 만 제공합니다.

아마도 가장 좋은 방법은 비트의 의미를 변경하는 것입니다. 괜찮을지라도 정밀 손실은 없습니다.

나는 그 주제에 대해 다른 사람들의 의견과 이론을 얻고 싶지만 간단히 생각하기 시작했습니다.

두 가지 규칙이 있습니다. # 1 정확도 상실이 없어야합니다. 즉, 0부터 18446744073709551615까지 숫자를 나타낼 수 있어야합니다. # 2 표준 64 비트 폼에서의 변환으로 인해 7 바이트 (56 비트) 이상이 필요하지 않습니다.

이러한 규칙은 특히 어렵습니다.

+6

이, 당신은 완료됩니다. 63 비트는 그 중 절반 만 나타낼 수 있습니다. 63 비트 압축 된 값 모두를 압축 해제하면 64 비트 값의 절반 밖에되지 않습니다. 간단한 계산. 56 비트는 숫자의 1/256 만 나타낼 수 있습니다. 당신은 64 비트가 필요합니다. 기간. –

답변

8

이러한 규칙은 특히 어렵습니다.

예, 불가능하기가 어렵습니다.

에 대해 8 바이트에서 8 바이트 미만으로 압축 할 수있는 경우 모든 가능한 64b 값은 1TB 파일이 약 7 바이트가 될 때까지 계속 반복 할 수 있습니다.

이것이 불가능한 다른 많은 정보 이론 주장이 있습니다. 예 : pigeonhole 원칙 : n 비트는 2^n 개의 고유 한 비트 패턴 만 가지고 있으므로 64 비트 미만의 모든 비트는 가능한 모든 64 비트 값에 대해 고유 한 표현을 가질 수 없습니다. 당신이 유용하게 사용할 수 있습니다 무엇


Huffman coding 또는 유사하다 : 일부 (64B) 값이 다른 사람보다 더 일반적인 경우하지 - 너무 복잡한 가변 길이 인코딩 방식은 총 바이트를 저장할 수 있습니다. 그러나 모든 64b 값을 가변 길이 코딩 체계로 표현할 수 있도록 일부 값의 인코딩에는 8 바이트 이상이 소요됩니다.

고급 엔트로피 코딩 방법이 존재하며 최신 비디오 코덱에 사용됩니다. (예 : x264의 CABAC).


더 이론, 위키 백과의 무손실 압축 articls는 Limitations section 있습니다.

은 참조 : 모든 2^64 자리 숫자가 모두 표현할 수 있어야하는 경우