হাফ বিট ব্যবহার করার কোনও উপায় আছে কি?


19

যেহেতু বেশিরভাগ লোকেরা জানেন, 4 টি বিট ব্যবহার করে আমরা 0 থেকে 15 (হেক্সাডেসিমালে 0123456789ABCDEF) গণনা করতে সক্ষম। তবে আমরা যদি কেবল 9 অবধি গণনা করি তবে আমরা 4 টি বিট ব্যবহার করব এবং এ থেকে F এর মাধ্যমে অঙ্কগুলি নষ্ট হবে।

তবে উইকিপিডিয়ায় কিউআর-কোড পৃষ্ঠাতে বলা হয়েছে যে 0 থেকে 9 পর্যন্ত কেবলমাত্র সংখ্যাগুলি ব্যবহার করে প্রতিটি চরিত্রের জন্য 3⅓ বিট ব্যবহার করা হয়, যা একটি পরিসংখ্যানিক অবস্থান থেকে সঠিক। এবং এখনও একটি তৃতীয়াংশ একটি শারীরিক বস্তু নয়, এবং 0 থেকে 9 নম্বর পাঠানো আমার জ্ঞানে কমপক্ষে 4 বিট ব্যবহার করে।

বিটগুলির ভগ্নাংশ সহ কার্যকরভাবে কোনও অক্ষর প্রেরণে নষ্ট সংযুক্তিগুলি ব্যবহার করার কোনও উপায় আছে কি?

ঠিক আছে, আমাকে একটি উদাহরণ দিন: দুটি সংখ্যা "27" পাঠাতে হবে। সাধারণ কোডিং কৌশল সহ, প্রেরিত বিটগুলি 00100111 হবে then আমরা তারপরে এমন কোনও সিস্টেম কল্পনা করতে পারি যা পরের বিটের উপর নির্ভর করে '2' ডিজিটটি 'E' বা 'F' দ্বারা প্রতিস্থাপন করবে; এই ক্ষেত্রে পরবর্তী বিট 0 হয়, সুতরাং '2' এর পরিবর্তে 'ই' হয়। ফলস্বরূপ বিট-স্ট্রিংটি তখন 1101 0 111 হবে the অন্যদিকে যদি "28" সংখ্যাগুলি অবশ্যই প্রেরণ করা হয় তবে '2' এর পরে প্রথম বিটটি 1 হবে, সুতরাং পরিবর্তে এটি 'এফ' এর পরিবর্তে অঙ্কটি পরিবর্তিত হবে, স্ট্রিং 1111 1 000 উত্পাদন করে।

উভয় ক্ষেত্রেই, 1 বিটের একটি অর্থনীতি প্রভাবিত হয়েছে, কারণ একটি নিবল দুটি ভিন্ন চরিত্রের জন্য ব্যবহৃত হয়েছিল। অন্য কথায়, প্রতিটি চরিত্রে সাড়ে তিন বিট ব্যবহার করা হয়।


2
একটি ছোট ডিজিট-স্পেসে মানগুলি প্যাকিং সম্পর্কিত ভিন্ন দৃষ্টিভঙ্গির জন্য, টার্নারি কম্পিউটারগুলি পরীক্ষা করুন ( en.wikedia.org/wiki/Ternary_computer ) যদি নুথের পক্ষে এটি যথেষ্ট ভাল হয় তবে এটি আমার পক্ষে যথেষ্ট ভাল!
আরএলএইচ

3
আপনি (10 * first_digit) + second_digitঅন্যান্য জিনিসের জন্য 100-127 কোড রেখে গেছেন বলে 0 ... 99 টি প্রতিনিধিত্ব করে 0 99 99 টি উপস্থাপন করে আপনি 7 টি বিটগুলিতে গণনা করতে এবং এনকোড করতে পারেন তা আরও ভাল । এবং 10 বিটের মধ্যে সংকুচিত 3 ডিজিট সহ আরও বেশি সঞ্চয় রয়েছে।
হট লিক্স

সমস্ত 100 আলাদা মান পৃথকভাবে প্রেরণ করতে, আপনি যেটি পেতে পারেন তা হ'ল 7 বিটে প্যাক করা। আপনার যদি আরও সংখ্যা থাকে তবে প্যাকিং আরও দক্ষ হবে। যদি আপনার কাছে পাঠানোর 64 টিরও কম মান থাকে তবে আপনি কেবল 6 টি বিট ব্যবহার করে এটি পাঠাতে পারবেন
ফুক্লভি

উত্তর:


22

আপনি অর্ধ বিট প্রেরণ করতে পারবেন না, তবে আপনি সঞ্চালন বা সঞ্চয়ের আগে কার্যকরভাবে দুটি আধ বিট প্যাক করতে পারেন।

আপনি নিজেই একটি উদাহরণ দেন, সুতরাং আপনি কার্যকরভাবে নিজের প্রশ্নের উত্তর একটি হ্যাঁ দিয়ে দিয়েছেন।

একটি সম্ভবত কিছুটা সহজ উপায় হ'ল imal বিটের মধ্যে দুটি দশমিক অঙ্কের মানকে সহজভাবে এনকোড করা। (বাইনারি কোডেড ডুয়াল-দশমিকের বাছাই)।


1
সংখ্যার জোড়কে সাতটি বিটে প্যাক করার জন্য একটি দুর্দান্ত ব্যবহারের ক্ষেত্র হ'ল বেশিরভাগ সংখ্যার ডেটা সমন্বিত ASCII ফাইলগুলি প্রেরণ করার সময়। 128 এর নীচের যে কোনও বাইট মান একটি একক ASCII অক্ষর উপস্থাপন করে, যখন 128-227 দুটি ASCII অঙ্ক উপস্থাপন করে। এনকোড বা ডিকোড করা সহজ, এবং তথ্যের মধ্যে বেশিরভাগ সংখ্যক (বা কোনও সংখ্যাসূচক) থাকা প্রয়োজন হয় না, তবে খুব সহজেই অঙ্কগুলির স্ট্রিংগুলি 50% দ্বারা সংকুচিত করতে পারে।
supercat

বা সেই পিডিপি 11 ফর্ম্যাটটিতে 3 আলফানিউমেরিক অক্ষর একটি বিট অতিরিক্ত দিয়ে 16 বিটে তৈরি করা হয়েছে ...
ব্রায়ান ড্রামমন্ড

@ ব্রায়ান ড্রামমন্ড: ৪০ টির সেট থেকে ঠিক তিনটি অক্ষর বা 39-এর সেট থেকে তিনটি পর্যন্ত সংরক্ষণ করতে 16 বিট ব্যবহার করা যেতে পারে, তবে অতিরিক্ত কিছু থাকবে না। সাধারণত "আলফানুমিক" বলতে কমপক্ষে ৩ 36 টির একটি সেট বোঝায়, তবে সেটটি কেবলমাত্র 32 এর মধ্যে সীমাবদ্ধ থাকলে একটি অতিরিক্ত বিট থাকার একমাত্র উপায় হবে
20-22 এ সুপারক্যাট

আমি ভেবেছিলাম এটি 5 বিট / চর। "স্যুইচ কোড সেট" এর জন্য একটি প্রতীক সংরক্ষিত রেখে আলফানিউমেরিক দুটি কোডসেটে বিভক্ত ছিল। আমি ভুল ছিলাম: এন.ইউইকিপিডিয়া.আর্গ / উইকি / ডিসি_ড্যাডিক্স-৫০ যদিও কেবলমাত্র একটি রাতের বেলা যখন আমি একটি সিপি / এম সিস্টেমে আমাকে "8 ফ্লপি" দিয়েছিলাম তার একটি প্রতিবেদনটি ডিকোড করতে হয়েছিল, কেবলমাত্র একটি অস্পষ্টতার সাথেই জেড 80 asm এর স্মৃতিচারণ
ব্রায়ান

19

আপনি হাফম্যান কোডিং ব্যবহার করতে পারেন যাতে সংখ্যাগুলি বিট বিস্তৃত দৈর্ঘ্যের সাথে থাকে। আপনি যদি এমন কোনও অঙ্ক সম্পর্কে সচেতন হন যা অন্যদের তুলনায় এটি প্রায়শই ঘটে।

উদাহরণ (সমান সংঘটন সহ):

0 - 1111

1 - 1110

2 - 110

3 - 101

4 - 100

5 - 011

6 - 010

7 - 001

8 - 000

1 নম্বর পাওয়ার জন্য প্রাপ্তির শেষ উদাহরণ:

প্রথম বিট আসে এবং কেবল 0 থেকে 4 টি বিকল্প হিসাবে ছেড়ে যায়।

দ্বিতীয় বিট আসে এবং কেবল 0 থেকে 2 বিকল্প হিসাবে ছেড়ে যায়।

তৃতীয় বিট আসে এবং বিকল্প হিসাবে 0 থেকে 1 ছেড়ে যায়।

সামনের বিট আসে এবং আগত সংখ্যা 1 হয়


12

সম্ভবত আপনি যা খুঁজছেন সেটি হ'ল অ্যারিমেটিক কোডিং, যা দক্ষতার সাথে একটি চিহ্নকে একটি স্ট্রিং এনকোড করতে পারে, যার মধ্যে প্রতিটি নীতিতে একটি ভগ্নাংশ (অ-পূর্ণসংখ্যক) সংখ্যক বিটের প্রয়োজন হতে পারে। (যদিও মোট বার্তাটি অবশ্যই বিটগুলির পুরো সংখ্যা হতে পারে)

উইকিপিডিয়া উদ্ধৃত :

পাটিগণিত কোডিং এন্ট্রপি এনকোডিংয়ের অন্যান্য রূপগুলির থেকে পৃথক যেমন হাফম্যান কোডিং যা ইনপুটটিকে উপাদান চিহ্নগুলিতে আলাদা করার পরিবর্তে এবং প্রতিটি কোডকে একটি কোড দিয়ে প্রতিস্থাপনের পরিবর্তে পাটিগণিত কোডিং পুরো বার্তাটিকে একক সংখ্যায় এনকোড করে একটি ভগ্নাংশ এন যেখানে (0.0 ≤ n < 1.0)।


10

ভাসমান পয়েন্ট গণিতের জন্য নতুন আইইইই পি 754 বাইনারি ছাড়াও দশমিক ফর্ম্যাটগুলি সংজ্ঞায়িত করে। একটি এনকোডিংয়ের মাধ্যমে ডিজিটাল অঙ্কগুলিকে 3 থেকে 10 বিটে বিভক্ত করার প্রস্তাব দেওয়া হয়েছে।

10বিট = 1024 সম্ভাব্য কোডগুলি ব্যবহার করে 0 থেকে 999 এ এনকোডিং বেশ দক্ষ এবং দশমিক সংখ্যা প্রায়শই যাইহোক তিনটি দ্বারা গোষ্ঠীভুক্ত হয়।

ঘন প্যাকড দশমিক : http://en.wikedia.org/wiki/Densely_packed_decimal


দশমিক অঙ্কগুলি তিনটি দ্বারা বিভক্ত করা হলেও, দশমিক-ভাসমান-পয়েন্ট শব্দার্থকগুলির জন্য সঠিক (দশমিক দশটি) -র তিনটি নন-মাল্টিপল-তিনটি শক্তি দ্বারা একটি ম্যান্টিসা স্কেলিং প্রয়োজন হতে পারে 10 বা 100 দ্বারা সমস্ত উপাদানকে গুণিত বা ভাগ করে; (২) কিছু বিট সংখ্যার উপরের বা নীচের অংশের জন্য ব্যবহার করা যেতে পারে, (এক্সপোনেন্ট মোড 3) এর উপর নির্ভর করে; (৩) যদি ব্যয়কারী বেস -১০০ সঞ্চিত থাকে তবে তিনটি সংখ্যার নীচের গোষ্ঠীটিকে মাঝে মাঝে নিকটতম ইউনিটের পরিবর্তে নিকটতম 10 বা নিকটতম 100 এর দিকে গোল করতে হয়।
supercat

আমি ব্যক্তিগতভাবে বিশ্বাস করি যে BigDecimalপ্রতিটি শব্দ 32 বিটের পরিবর্তে 9 দশমিক অঙ্ক রাখে তবে অনেকগুলি উদ্দেশ্যে প্রকারগুলি আরও কার্যকর হবে তবে গোলাকার আচরণগুলি অঙ্কের গোষ্ঠীকরণের দ্বারা প্রভাবিত হওয়া উচিত নয়।
supercat

4

বাইনারি (বা হেক্সাডেসিমাল) এর 1: 1 চিঠিপত্র বিটগুলির জন্য কেবল একটি প্রতীক এনকোডিং। সুতরাং হ্যাঁ, আপনি যেমনটি দেখিয়েছেন এটি সম্ভব। এটি ব্যবহৃত অন্য একটি জায়গা হ'ল (তবে কিছুটা আলাদাভাবে) যোগাযোগ ব্যবস্থায় ট্রেলিস এনকোডিং / ডিকোডিংয়ে রয়েছে যেখানে ডিকোডিংটি সহজ করার জন্য বিট ট্রানজিশনগুলি আরও দূরে রাখা হয়। এবং অবশ্যই 8 বি / 10 বি এবং b৪ বি / etc. 66 বি ইত্যাদি ইত্যাদি এনকোডিং হ'ল একটি অনুরূপ ধারণা, যার মধ্যে ডিসি ভারসাম্য, প্রতীক পৃথকীকরণ এবং সাব-ব্যান্ডগুলিতে নিয়ন্ত্রণের কোডগুলি পাওয়ার জন্য একটি ছোট প্রতীক স্থানটিকে কিছুটা রিডান্টান্ট বৃহত্তর জায়গায় এনকোড করা হয়।


4

ডেটা উপস্থাপনা আপনি বা আপনার প্রোগ্রাম এটি যে ব্যাখ্যা দেয় তার উপর নির্ভর করে।

আমরা ASCII অক্ষর হিসাবে উদাহরণস্বরূপ, ফলনকারী '27' প্রেরণ করতে পারি 0x3237 = 0b0011001000110111

এক্সএন(এক্স)লগ2এন(এক্স)

এক্স1,এক্স2এন(এক্স1),এন(এক্স2)লগ2এন(এক্স1)+ +লগ2এন(এক্স2)লগ2(এন(এক্স1)এন(এক্স2))

2লগ2(10)=24=8লগ2(1010)=7

এটি সর্বদা অ্যাপ্লিকেশনটির উপর নির্ভর করে, তবে সাধারণত যখন আপনি প্রস্তাবিত ভেরিয়েবলগুলিতে 'যোগদান' করেন, আপনি যদি এই ভেরিয়েবলগুলির উপর ক্রিয়াকলাপ করতে চান তবে এটি আরও বেশি গণনার শক্তি ব্যয় করতে চলেছে। 'যোগ' ভেরিয়েবলগুলিতে অপারেশন যুক্ত এবং বিয়োগ করানো স্বাভাবিকের চেয়ে জটিল এবং এগুলি হার্ডওয়্যারে আরও স্থানের প্রয়োজন হতে পারে, বা দীর্ঘতর বিলম্বের কারণ হতে পারে।


...


2

মানগুলি প্যাক করার স্বাভাবিক উপায় হ'ল প্রতিটি মানকে তার পরিসীমা দিয়ে গুণ করে, যাতে আপনি বিটগুলির মধ্যে দক্ষতার সাথে উপস্থাপন করতে পারেন এমন একটি বৃহত সংখ্যার সাথে শেষ করেন। যখন আপনাকে আনপ্যাকিং করে ব্যাপ্তি অনুসারে বিভাজন করা হয়, তখন বাকিটি হ'ল অঙ্ক হয় এবং ফলাফলটি বাকী প্যাকড অঙ্কগুলি থাকে।

যদি আপনার 0 থেকে 2 সীমাতে 5 টি মান থাকে তবে আপনি প্রতিটি মানের 2 বিট ব্যবহারের নিষ্কলুষ পদ্ধতিতে 10 বিটের পরিবর্তে 8 বিটগুলিতে (মানগুলি উপস্থাপন করার জন্য আপনার কমপক্ষে 7.92 বিট প্রয়োজন) প্রতিনিধিত্ব করতে পারেন, ((এন 1 * 3 + এন 2 ) * 3 + এন 3 ) * 3 + এন 4 ) * 3 + এন 5 করে


এনকোডিংয়ের এই পদ্ধতির কোনও নাম আছে?
কেগান জে

1

তত্ত্ব অনুসারে, যদি আপনি হাই-প্রতিবন্ধী সনাক্তকারীর জন্য সার্কিট স্পেস এবং শক্তি ব্যয় করতে ইচ্ছুক হন তবে আপনি একটি ডিজিটাল তারের (3, 1, এবং উচ্চ-জেড) 3 স্টেট প্রেরণ করতে পারেন। দাবি অস্বীকার: এটি সিমুলেটারে দুর্দান্ত কাজ করে। আমি জানি না যে সার্কিটের এমন কিছু সমস্যা রয়েছে যা এটি অযৌক্তিক করে তোলে, যেমন এটি বলুন যে এটি সত্যিকারের গেটগুলির সাধারণ জোড়ার মতো দ্রুত স্যুইচ করতে পারে না।

হাই-জেড থেকে সিগন্যালে সিগন্যাল স্থানান্তরের জন্য আমার সাধারণ শব্দটি (যেখানে সিগনালে সাধারণত সিগন্যাল স্থল থাকে) অর্ধ-বিট সংকেত।


1

আপনি একটি দশমিক সংখ্যা পাঠাতে চান, 3⅓ বিট প্রয়োজন। তবে আপনাকে 4 টি বিট ব্যবহার করতে হবে, কারণ আপনি কিছুটা তৃতীয়াংশ প্রেরণ করতে পারবেন না।

সুতরাং, 3⅓ বিটগুলির প্রকৃত অর্থ কী তা জানতে, আপনার প্রতিটি বিট এর 3 (বা তিন) ডিজিটের প্রয়োজন। আপনি যদি 0 এবং 9 এর মধ্যে 2 (3) দশমিক অঙ্কগুলি পাঠাতে চান, যার প্রতিটি প্রয়োজন 3⅓ বিটের চেয়ে কিছুটা কম, আপনি 7 (10) বিট ব্যবহার করে এটি করতে পারেন। গঠনমূলক প্রমাণ সহজ:

7 (10) বিট আপনাকে 0 এবং 128 (1023) এর মধ্যে একটি নম্বর এনকোড করার অনুমতি দেয় - তবে আপনার কেবলমাত্র 00 (000) থেকে 99 (999) প্রয়োজন হবে, যা দুটি (তিন) দশমিক অঙ্কের সমস্ত সম্ভাব্য এনকোডিং। Qed


1

আমি মনে করি আপনি লিঙ্কযুক্ত উইকি নিবন্ধের অর্থ কী তা বোঝাচ্ছেন। কি বোঝানো হয় যে অক্ষরের একটি স্ট্রিং, যাতে সম্পূর্ণরূপে সাংখ্যিক (ছাড়া স্পেস, কমা বা সাঙ্কেতিক চিহ্ন) জন্য, আদর্শ কম্প্রেশন ব্যবহার করার মাধ্যমে আপনি 3 ব্যবহার প্রতিটি অক্ষর উপস্থাপন করতে পারেন হয় 1 / 3 বিট গড়ে । প্রকৃতপক্ষে, এটি এর চেয়ে কিছুটা ভাল, যেহেতু গণিতটি বলে আপনি দীর্ঘমেয়াদে লগ 2 (10) = 3.3219 বিট / চরিত্র পেতে পারেন ।

একইভাবে, আলফানিউমারিক প্লাসের জন্য কিছু চিহ্ন (বড় হাতের অক্ষর এবং 9 টি চিহ্ন) বা 45 টি অক্ষরের সেটগুলির জন্য আপনার লগ 2 (45) = 5.4918 বিট / অক্ষর প্রয়োজন যা নিবন্ধে 5.5 অবধি বৃত্তাকার।

হ্রাস বিট / চরিত্রটি একটি প্রিসেট এনকোডিং বা কিউআর স্ট্যান্ডার্ড দ্বারা নির্দিষ্ট করা একটি সংক্ষেপণ স্কিম দিয়ে সংক্ষেপণ ব্যবহার করে অর্জন করা হয় (আমি নিশ্চিত যা ব্যবহার করা হয় নি)। এটি এনকোড করার জন্য একটি চরিত্রের গড় বিটগুলির গড় সংখ্যার প্রতিনিধিত্ব করে, তাই পৃথক অক্ষর কম বেশি বিট ব্যবহার করে এনকোড করা হবে। উপরের তালিকাভুক্ত মানগুলিও অসীম, এলোমেলো স্ট্রিংয়ের আদর্শ মান realize সংক্ষেপণের অনুপাত পাওয়া সম্ভব যা বিশেষভাবে তৈরি করা স্ট্রিংয়ের চেয়ে ভাল বা আরও খারাপ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.