ভেরিয়েবল লেংথ কোয়ান্টিটি এনকোডিং ও ডিকোডিং বাস্তবায়ন করুন।
এই অনুশীলনীর লক্ষ্য হলো VLQ এনকোডিং/ডিকোডিং বাস্তবায়ন করা।
সংক্ষেপে, এই এনকোডিংয়ের লক্ষ্য হলো ইন্টিজার মানগুলো এমনভাবে এনকোড করা, যাতে বাইট সাশ্রয় হয়। প্রতিটি বাইটের শুধু প্রথম ৭টি বিট তাৎপর্যপূর্ণ (ডান দিকে সারিবদ্ধ; অনেকটা একটি ASCII বাইটের মতো)। তাই আপনার কাছে যদি একটি ৩২-বিট মান থাকে, তাহলে সেটিকে ৭-বিট বাইটের একটি ধারা হিসেবে খুলে ফেলতে হবে। অবশ্যই, আপনার ইন্টিজার অনুযায়ী বাইটের সংখ্যা ভিন্ন ভিন্ন হবে। ধারার শেষ বাইট কোনটি তা বোঝাতে আপনি ৭ নম্বর বিটটি ক্লিয়ার রাখেন। আর আগের সব বাইটে আপনি ৭ নম্বর বিটটি সেট করেন।
তাই কোনো ইন্টিজার 0-127-এর মধ্যে থাকলে, সেটিকে একটি বাইটেই প্রকাশ করা যায়।
যদিও VLQ যেকোনো আকারের সংখ্যা সামলাতে পারে, এই অনুশীলনীতে আমরা কেবল সেই সংখ্যাগুলোতেই সীমাবদ্ধ থাকব, যেগুলো একটি ৩২-বিট আনসাইনড ইন্টিজারে ধরে।
নিচে ৩২-বিট মান হিসেবে ইন্টিজারের কিছু উদাহরণ এবং সেগুলোর যে ভেরিয়েবল লেংথ কোয়ান্টিটিতে রূপান্তরিত হয়, তা দেওয়া হলো:
NUMBER VARIABLE QUANTITY
00000000 00
00000040 40
0000007F 7F
00000080 81 00
00002000 C0 00
00003FFF FF 7F
00004000 81 80 00
00100000 C0 80 00
001FFFFF FF FF 7F
00200000 81 80 80 00
08000000 C0 80 80 00
0FFFFFFF FF FF FF 7F
Exercism-এ সাইন আপ করুন, PHP ট্র্যাকের 11টি কনসেপ্ট122টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।