갑자기 궁금한게 있어서 이렇게 글을 올립니다. 1바이트를 4비트씩 나눈후... 앞에 4비트에는 0~5 뒤에 4비트에는 0~9 를 넣어두고 이를 다시 4비트로 압축(?) 시킬수가 있을까요? 혹시 될까해서 비트연산 이래 저래 해봤는데... 안나오더라구요...;; 혹시 다른 방법이 있을까요???
불가능합니다. 위의 정보는 앞의 6개, 뒤의 10개를 표현해야 하는데 이것의 가능성은 6*10의 60개입니다. 최소 6비트(64개)의 공간이 필요하네요.
더하기/빼기 추천합니다. 합쳐놓고 보면 0~5, 6~15 ------------ - 주실 것 까지야.
초대량의 데이타를 말도 안되는 상황에서 다뤄야만 되는 상황이라면, 적당한 손실압축과 정밀한 추론 알고리즘을 사용해서 평균 4bit 를 달성할 수 있을 지도 모른다는 상상까지는 해 봤습니다.
실현 가능성을 얘기해보라면... 더하기/빼기 보다는 좀 더 쳐줘야 되지 않겠나 싶습니다.
질문에서 결과값이 6+10비트인지 6*10비트인지 불명확합니다.
log2(6+10), log2(6*10)의 차이입니다.
만일 메모리를 적게 차지하는 목적이라면
둘 중 하나를 키로 삼고 XOR하면 4비트 변수만 3개로 연산이 되는것 같습니다.
내용이 규칙적이라면 압축알고리듬을 알아보세요.
제가 더는 몰라서 여기까지.
그리고 참고로 동기신호로 통신을 이용하면 데이터 저장장소를 줄일 수 있습니다.
만약 8비트 정보를 4비트로 보내고 싶으면 4사이클 신호에 얹으면 됩니다.
공간을 시간으로 잠깐 변환시키는 것입니다.
재벌 2세가 재벌이 될 확률과 금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록 자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전http://blog.aaidee.com
귀태닷컴http://www.gwitae.com
비손실 데이터 압축방법 중에 호프먼 코딩이라는게 있습니다. 어떤 원리냐면 자주 나오는 코드를 길이가 짧은 코드로 대체하는거죠.
예를 들어 어떤 파일의 전체 데이터가 8바이트 단위로 0x33이 100번, 0x26이 15번, 0x67이 2번, 0x13이 1번 나왔다면
0x33 = 0b (1비트 길이) 0x26 = 10b (2비트 길이) 0x67 = 110b (3비트 길이) 0x13 = 111b (3비트 길이)
각각의 코드들을 위 표대로 변환시켜 저장함으로써 압축효과를 내게 됩니다. 물론 표 정보도 따로 기록이 되어야 하지요. GIF 등에 사용되는 LZW 압축도 이방식입니다.
또다른 것은 RLE라는 것이 있는데, 이건 단순하고 누구나 생각할 수 있늘 알고리즘입니다. 'aaaaa'라는 문자열이 있으면 '5a' 식으로 써 넣는 거죠.
Bzip2에는 위와 전혀 다른 방식의 알고리즘이 적용되어 있고요. 문자열 비교로 하는것인데, 이 알고리즘의 특성상 속도가 느릴 수 밖에 없다고 하네요.
비손실 압축은 보통 이런것을 많이 씁니다.
Written By the Black Knight of Destruction
텍스트 포맷에 대한 자세한 정보
<code>
<blockcode>
<apache>
<applescript>
<autoconf>
<awk>
<bash>
<c>
<cpp>
<css>
<diff>
<drupal5>
<drupal6>
<gdb>
<html>
<html5>
<java>
<javascript>
<ldif>
<lua>
<make>
<mysql>
<perl>
<perl6>
<php>
<pgsql>
<proftpd>
<python>
<reg>
<spec>
<ruby>
<foo>
[foo]
불가능합니다. 위의
불가능합니다.
위의 정보는 앞의 6개, 뒤의 10개를 표현해야 하는데
이것의 가능성은 6*10의 60개입니다.
최소 6비트(64개)의 공간이 필요하네요.
더하기/빼기
더하기/빼기 추천합니다.
합쳐놓고 보면
0~5, 6~15
------------
- 주실 것 까지야.
초대량의 데이타를 말도 안되는 상황에서 다뤄야만 되는 상황이라면,
적당한 손실압축과 정밀한 추론 알고리즘을 사용해서
평균 4bit 를 달성할 수 있을 지도 모른다는 상상까지는 해 봤습니다.
실현 가능성을 얘기해보라면...
더하기/빼기 보다는 좀 더 쳐줘야 되지 않겠나 싶습니다.
질문이 결과값이
질문에서 결과값이 6+10비트인지 6*10비트인지 불명확합니다.
log2(6+10), log2(6*10)의 차이입니다.
만일 메모리를 적게 차지하는 목적이라면
둘 중 하나를 키로 삼고 XOR하면 4비트 변수만 3개로 연산이 되는것 같습니다.
내용이 규칙적이라면 압축알고리듬을 알아보세요.
제가 더는 몰라서 여기까지.
그리고 참고로 동기신호로 통신을 이용하면 데이터 저장장소를 줄일 수 있습니다.
만약 8비트 정보를 4비트로 보내고 싶으면 4사이클 신호에 얹으면 됩니다.
공간을 시간으로 잠깐 변환시키는 것입니다.
재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.
아이디의 아이디어 무한도전
http://blog.aaidee.com
귀태닷컴
http://www.gwitae.com
비손실 데이터
비손실 데이터 압축방법 중에 호프먼 코딩이라는게 있습니다.
어떤 원리냐면 자주 나오는 코드를 길이가 짧은 코드로 대체하는거죠.
예를 들어 어떤 파일의 전체 데이터가 8바이트 단위로
0x33이 100번, 0x26이 15번, 0x67이 2번, 0x13이 1번 나왔다면
0x33 = 0b (1비트 길이)
0x26 = 10b (2비트 길이)
0x67 = 110b (3비트 길이)
0x13 = 111b (3비트 길이)
각각의 코드들을 위 표대로 변환시켜 저장함으로써 압축효과를 내게 됩니다.
물론 표 정보도 따로 기록이 되어야 하지요.
GIF 등에 사용되는 LZW 압축도 이방식입니다.
또다른 것은 RLE라는 것이 있는데, 이건 단순하고 누구나 생각할 수 있늘 알고리즘입니다.
'aaaaa'라는 문자열이 있으면 '5a' 식으로 써 넣는 거죠.
Bzip2에는 위와 전혀 다른 방식의 알고리즘이 적용되어 있고요.
문자열 비교로 하는것인데, 이 알고리즘의 특성상 속도가 느릴 수 밖에 없다고 하네요.
비손실 압축은 보통 이런것을 많이 씁니다.
Written By the Black Knight of Destruction
Written By the Black Knight of Destruction
댓글 달기