Arithmetic Coding
Arithmetic Coding
الترميز الحسابي يشبه ترميز هوفمان.
فإنهما يحققان عملية الضغط عن طريق تقليل متوسط عدد البتات المطلوبة لتمثيل الرمز.
ولكنه يختلف عن ترميزهوفمان بانه يعمل على ترميز بلوك كامل من
الرموز او الاحرف عكس هوفمان الذي يقوم بترميز كل حرف او رمز بشكل منفصل.
في
الترميز الحسابي يتم تقسيم الفاصل الزمني من صفر إلى واحد وفقا لاحتمالات تكرارات
الأحرف.
Arithmetic
encoder
;Low=0
;High=1
;Range=1
:while input X are coming
;(High=Low+Range*HighValue(X
;(Low=Low+Range*LowValue(X
Range=High-Low
Arithmetic decoder
Get encoded number: X
do:
find symbol whose range straddles the encoded
number;العثور على الرمز الذي يتجاوز نطاقه الرقم المشفر
output the symbol;
range = LowValue(symbol) – HighValue(symbol);
X = X - LowValue (symbol);
X = X / range;
until no more symbols needed;