9 Aralık 2010 Perşembe

Byte sıkıştırma yöntemi ve programı

Bu çalışmalar kendi araştırmalarımdır. Bu alanda yayınlanan bilgiler sadece sizinle bilgi paylaşımı yapmam içindir. Her türlü alıntı kaynakta gösterilse dahi iznim dışındadır.


Bu konudaki çalışmaları halen devam etmektedir. Araştırmalarım verinin daha çok sıkıştırılabilmesi üzerinedir.

Öncelikle
En çok sorulan sorulara cevaplar

Sıkıştırma işlemi bilgisayara zarar verir mi ?
Bilgisayarda sıkıştırma işlemi fiziki ya da kimyasal etki/tepkilerle değil matematiksel işlemlerden yararlanarak yapılır. Bunun için hiç bir zarar vermez bilgisayara bir normal program kadar normaldir.

Bir dosya bir milyon kez sıkıştırılabilir mi ?
Hayır, bir dosya bir en fazla 2, kez sıkıştırılabilir o andan itibaren küçülme gösteremez ve git gide büyümeye başlar. Şöyle düşünürsek 1 milyon Byte'lık bir dosyayı bir harfe çevirmek mümkün olsa o harf neyi ifade ederdi !

Sıkıştırılmış dosya tekrar açıldığında kalitesi düşer mi ?
Gerçekten sık sorulan bir soru. ZIP, ARJ, RAR gibi normal dosya sıkıştırma programları asla bilgi kaybı oluşturmazlar. Fakat bu tip program olmayan bir sıkıştırma formatı(düzeneği) olan JPEG/MPEG/MP3 gibi resim/ses formatlarında bir kalite kaybı olması doğaldır.

Yöntemler İki tür veri sıkıştırma yöntemi vardır. Bunlardan birincisi bit tipinde veri sıkıştırma diğeri ise Byte tipinde veri sıkıştırma. Bit sıkıştırmada daha güçlü, Byte sıkıştırma daha hızlıdır. Her iki sıkıştırma metodunun kendi içinde bir çok alt yöntemi vardır. Biz bu yazıda kendi yaptığım bir sıkıştırma yöntemi inceleyeceğiz.

Bit Compression En küçük veri parçasının 1 ve 0'lardan oluştuğunu biliyorsunuz. Bu yöntemde genellikle kullanılan (zip'inde kullandığı) bit sözlüğü oluşturmaktadır. Bu yöntemde veri içerisindeki tüm bilgiler bit'lere dönüştürüldükten sonra her farklı bit bir sözcük olarak adlandırılan tanım alır. Daha sonra yeni oluşturulan sıkıştırılmış dosyada bit'lere karşılık gelen sözcükler yazılır. Misal bir bit grubu 64 bit (4 byte) ve aynı veri içerisinde 10 kez geçerse ve bu 1 byte'lık sözcük olarak alınmışsa sıkıştırmadan 30 byte kârınız vardır.

Byte Compression Bu yöntemde önemli veri parçası Byte (karakterler) oluşturur. En çok kullanılan yöntem bir çokluğu belli etmektir. Veri içeriği alındıktan sonra yan yana tümleşik aynı tip Byte'lar çeşitli formülasyonlarla sıkıştırılır. Örneğin 10'tane yan yana A harfi yerine Ax10 gibi.
Şimdi sizden bir kompleksi kafanızda canlandırmanızı isteyeceğim. A*10 yerine A*9 yazsak, zaten bir tane A harfi var başta. Biz tek başına duran bir A harfini sıkıştırmadığımız için bunu çözümlediğimiz bilgilerde de belirtmeyelim. Geri çözerken de bir tane fazla olduğunu hatırlatırsak doğru bir formül yapmış oluruz. Akıllılık ederek 1 byte yer kazandık. Üstelik bir problemimiz daha varken. Diyelim ki sıkıştırmak istediğimiz dosya bir yazı dosyası ve içinde şöyle bir satır geçiyor. "PARAMIZIN ON KATINI HESAP ETMEK İÇİN PARA*10=ON KAT PARAMIZ" İşte ikinci problem biz buradaki A*10 satırını görünce bu satırı "PARAMIZIN ON KATINI HESAP ETMEK İÇİN PARAAAAAAAAAA=ON KAT PARAMIZ" olarak yorumlayacağız. O zaman anlaşılıyor ki direkt bir işaretle bunu belli edemeyiz. Çünkü karışık dosyamızda aynı sıkıştırma formülümüz gibi bilgiler çıktığında sıkıştırılmış veri gibi gözüküp açılınca ortalığı karışacaktır.

Kurallar Sıkıştırma işlemi yaparken bazı belirli bazıda belirsiz kurallarımız var. Belirsizler ayak bağı olurken belirli kurallar işimizi kolaylaştırır. Belirli kurallar: 0..255 arası Karakterimiz var. Dosya boyutumuz sabit. Belirsiz kurallar: Dosyayı sıkıştırırken de 0..255 arası karakter kullanacağımız için bilgi ve formülümüz karışacak.

Başlık Bir dosyaya isim vermek gibi dosyanın başlangıcında sabit bir yere de bilgi saklayabiliriz. Dosya sistemleri temelleri atılmasından günümüze kadar Dosya Başlıkları kullanılmaktadır. Bir dosyanın içinde şu görünümde düşünebiliriz onları. DOSYA BAŞLANGICI - SABİT BAŞLIK (İÇERİKLERİ) - ASIL/ASİL İÇERİKLER.




Yer(Location) Dosya ya da veri içinde bir yerin nerde olduğunu bilmek. Onu göstermek, işaret etmek.

Format Düzen, yapı

Adres(Adress) Bir yerin adresi, bir bilgi parçacığının adresi. Her adres bir değer'i belirtir. Adrese giderek değer'i bulabiliriz.

Değer(Value) Bir bilgi parçacığı, adreslerdeki değerler (veriler)

Aynı Sayılarla Aynı Sayıları Kısa İfade Etmek Başlığı tam okuyup anladığımızda yapacağımız işindi aynısı olduğunu söyleyebilirim. Bu gerçekten karmaşık ve kompleks bir işlem. Elimizde olan ise sadece 256'tane karakter.

Hiç yorum yok:

Yorum Gönder