Hafıza çipine Tel. No Kaydetme.

Başlatan LukeSkywalker, 29 Ocak 2023, 16:52:33

LukeSkywalker

Arkadaşlar merhaba.

Bir hafıza çipine 10 haneli bir telefon numarasını (örn. 561 999 99 99) en düşük boyutta yer kaplayacak şekilde nasıl kaydedebilirim? Her numara için 4 byte kadar yer ayırmak kolay fakat bunu daha da sıkıştırabilir miyiz merak ediyorum. Fikirlerinizi belirtirseniz sevinirim.

Sozuak

Çok fayda sağlamaz belki ama 5xx kısmındaki 5 sabit onu atabilirsin. Numaraları da ardışıl yazarsın

alikeskinkilic

en sıkıştırılmış hali bcd şeklinde değil standart byte şeklinde sıralı kaydedersiniz çözerken bcd ye çevirirsiniz gerekiyorsa
Hep meraktan

kimlenbu

Delta encoding diye aratırsanız belki işinize yarayabilir. Ama kazanacağınızdan daha fazla alanı yazacağınız compress/decompress fonksiyonlarıyla flash'tan kaybedersiniz.

serdararikan

32 bit integer olarak kaydetmek en uygun çözüm gibi görünüyor

LukeSkywalker

Alıntı yapılan: alikeskinkilic - 30 Ocak 2023, 08:57:45en sıkıştırılmış hali bcd şeklinde değil standart byte şeklinde sıralı kaydedersiniz çözerken bcd ye çevirirsiniz gerekiyorsa

Bu şekilde yaparak 4 byte'a kadar düşürebildim.

LukeSkywalker

#6
Alıntı yapılan: serdararikan - 30 Ocak 2023, 12:56:3832 bit integer olarak kaydetmek en uygun çözüm gibi görünüyor

Baştaki 5'i atarak (99 999 99 99) bu şekilde yaptığımızda 4 byte oluyor.
Fakat 536,532 gibi operatör kodlarını tek hane ile kodlarsak (örneğin 542=0, 532=1 vs.) toplam 30 tane operatör kodu olduğu için yine 4 byte oluyor.


Andromeda

Mutlaka bir hafıza ya bir tane sayı gelecek..Kuantum bilgisayar olsa olurdu belki..ama ne çare :)
" Tanrı, iradesini hakim kılmak için yeryüzündeki iyi insanları kullanır, yeryüzündeki kötü insanlar ise kendi iradelerini hakim kılmak için Tanrı'yı kullanırlar." ..." Tanrı'dan mesaj gelmiyor, biz Tanrı'ya mesaj gönderiyoruz"

LukeSkywalker

Bu sekilde 4 byte olarak kaydedersem, 1Mbit bir flasha 32768 adet tel no kaydedilebiliyor. Bu şekilde yapacağım o zaman. Teşekkürler herkese.


elektronik_0

Alıntı yapılan: LukeSkywalker - 30 Ocak 2023, 19:22:00Baştaki 5'i atarak (99 999 99 99) bu şekilde yaptığımızda 4 byte oluyor.
Fakat 536,532 gibi operatör kodlarını tek hane ile kodlarsak (örneğin 542=0, 532=1 vs.) toplam 30 tane operatör kodu olduğu için yine 4 byte oluyor.



Her bir 9 ifadesi için 4 bit gerekmiyor mu?

5'i atınca (99 999 99 99) oluyor.

9 tane 9 var. 36 bit oluyor. 4 byte'a nasıl sığıyor?

mehmet

Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr
https://creativecommons.org/licenses/by/4.0/deed.tr "CC BY"

CLR

huffman encoding ve decoding kullanabilirsin veya LZ77 veya her ikisini ama birkaç KB ram ister,
Mesela ben GSM projesinde kullandım, 1208 byte'lık stringi huffman ile, 836byte'a indirdim, 372byte yer kazancı sağladı, (%30 kazanç)
Sonra LZ77 ile compress ettim bu defa toplam da 699 byte sıkıştırdı. (%57 kazanç)

Tabii herşeyin bir bedeli var, daha fazla sram ve daha fazla işlem gücü gerekir.
Knowledge and Experience are Power

yas

#13
Alıntı yapılan: LukeSkywalker - 29 Ocak 2023, 16:52:33Arkadaşlar merhaba.

Bir hafıza çipine 10 haneli bir telefon numarasını (örn. 561 999 99 99) en düşük boyutta yer kaplayacak şekilde nasıl kaydedebilirim? Her numara için 4 byte kadar yer ayırmak kolay fakat bunu daha da sıkıştırabilir miyiz merak ediyorum. Fikirlerinizi belirtirseniz sevinirim.

Eğer ilk rakam her zaman gsm operatörlerinin ön tanımlı numaraları ile başlayacaksa 312,212,216,416 gibi şehirler arası alan kodları kullanılmayacaksa, TTxxxxxxxx şeklinde 29 bite saklanabilir. Buda yaklaşık 10% yer tasarrufu sağlar. Fakat harcanacak efora değer mi emin olamadım. Diyelim ki 32 bitlik saklama ile 150 numara tutulacak alan 150x32=4800 bit yer işgal ederken aynı alana 29 bit olarak kaydedildiğinde yaklaşık 165 adet telefon numarası saklanabilir.

CLR

Bu tür data sıkıştırma, saklama alanından daha çok RF, GSM haberleşmelerinde kullanılır, böylece daha az yayınım (gsm için data boyutu eşittir masraf), daha fazla enerji tasarrufu sağlar. Yoksa 1Mbit flash yerine yaklaşık aynı fiyata 2-4Mbit bulabilirsin.
Knowledge and Experience are Power