어떻게 값을 압축 해제 작업에 대한 Facebook 의 고릴라는 경우에는 수의 주요 제로 저장하지 않음

cs.stackexchange https://cs.stackexchange.com/questions/126862

  •  29-09-2020
  •  | 
  •  

문제

나이지: http://www.vldb.org/pvldb/vol8/p1816-teller.pdf

나의 질문에 대한 섹션 4.1.2 는 곳에 그것을 말합니다:

때 XOR non-zero,의 수를 계산이 앞뒤에 제로 XOR,저장 비트가'1'다음 에 의해 하나)또는 b):

(a)(제어 비트를'0')는 경우는 블록의 의미 있는 비트 에 속하는 블록의 의미 있는 비트, 즉,적어도 많은 주요 제로 으로 많은 뒤 제로 앞의 값이 사용하는 정보에 대한 차단 위치 및 저장 의미 있는 약하게 값입니다.

압축을 해제 할 때,어떻게 우리가 알고 있으면 우리가 추가해야 선도 제로나 찌끼를 제로?예를 들어 말할 수 있습 우리는 다음과 같은 48 비트 숫자:

A = 0xfff ffff fffff
B = 0xfff 0000 fffff
C = 0xfff 0ff0 fffff

A xor B = 0x000 ffff 00000

B xor C = 0x000 0ff0 00000

만약 우리가 따라 압축 알고리즘 A xor B 우리는 것입니다 상점의 숫자도 제로,는 12, 뿐만 아니라,의미있는 비트 ffff.

지금 B xor C 기 때문에"거기에 최소한으로 많은 주요 제로 많은 뒤 제로로 이전 값은"그래서 우리는 저장하는 의미있는 비트 ff.하고 싶을 때,디코딩하는 ff,기본적 이전에 압축된 비트,내가 가지고 있다는 것을 알고에서 적어도 12 주요 제로 20 찌끼를 제로,하지만 나는 아직을 채우기 위해 필요 8 제;해야 합니까 ff0000ff 또는 다른 조합이 있습니까?

도움이 되었습니까?

해결책

내 응답을 읽은 후에 참조 구현: https://github.com/facebookarchive/beringei/blob/92784ec6e22572f28500c76b669276007635c875/beringei/lib/TimeSeriesStream.cpp

의 사용 기간"의미있는 비트에"종이가 분명하지 않습니다.나는 생각한 문장"이용에 대한 정보를 차단 위치 및 저장 의미 있는 약하게 가치."는 의미를 저장하는 비트와 모든 앞뒤를 제로 제거기 때문에"의미 있는 약하게 값을"값없이 앞뒤니다.하지만,에 따라 참조 구현 당신은 스트립 같은 양의 앞뒤를 제로로 이전 값은 델타;이 의미있는 비트 이 경우 여전히 포함될 수 있습니다 몇 가지 앞과 뒤의 터널을 설정하는 방식이다

그래서,예를 들어 이 질문에 우리가점 0ff0 으로 의미있는 비트에 대 ff.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 cs.stackexchange
scroll top