দশমিক বিন্দু স্পষ্টভাবে কোথাও সংরক্ষণ করা হয় না; এটি একটি ডিসপ্লে ইস্যু।
নীচের ব্যাখ্যাটি সরলকরণ; আমি প্রচুর গুরুত্বপূর্ণ বিবরণ রেখে চলেছি এবং আমার উদাহরণগুলি কোনও বাস্তব-বিশ্বের প্ল্যাটফর্মের প্রতিনিধিত্ব করার জন্য নয়। এটি আপনাকে স্মৃতিতে ভাসমান-পয়েন্টের মানগুলি কীভাবে উপস্থাপিত হয় এবং এর সাথে সম্পর্কিত সমস্যাগুলির একটি স্বাদ এনে দেয় তবে আপনি ভাসমান-পয়েন্ট অ্যারিমেটিক সম্পর্কে প্রতিটি কম্পিউটার বিজ্ঞানী কী জানেন ।
বেস 10 এর পরিবর্তে বেস 2 ব্যবহার করে বৈজ্ঞানিক স্বরলিপিটির বৈকল্পিকের একটি ভাসমান-পয়েন্ট মান উপস্থাপন করে শুরু করুন উদাহরণস্বরূপ, মান 3.14159 হিসাবে প্রতিনিধিত্ব করা যেতে পারে
0.7853975 * 2 2
0.7853975 হ'ল তাত্পর্যপূর্ণ , ম্যান্টিসা ওরফে; এটি উল্লেখযোগ্য সংখ্যাযুক্ত সংখ্যার অংশ। এই মানটি 3.14159 পেতে 2 পাওয়ার বাড়ানো বেস 2 দিয়ে গুণিত হয় lied
ভাসমান-পয়েন্ট নম্বরগুলি হ'ল তাত্পর্যপূর্ণ এবং এক্সপোনেন্ট (একটি চিহ্ন বিট সহ) সংরক্ষণ করে এনকোড করা হয়।
একটি সাধারণ 32-বিট লেআউটটি নিম্নলিখিতগুলির মতো কিছু দেখায়:
3 32222222 22211111111110000000000
1 09876543 21098765432109876543210
+-+--------+-----------------------+
| | | |
+-+--------+-----------------------+
^ ^ ^
| | |
| | +-- significand
| |
| +------------------- exponent
|
+------------------------ sign bit
স্বাক্ষরিত পূর্ণসংখ্যার ধরণের মতো, উচ্চ-অর্ডার বিট চিহ্নটি নির্দেশ করে; 0 একটি ধনাত্মক মান নির্দেশ করে, 1 টি নেতিবাচক নির্দেশ করে।
পরের 8 টি বিট ব্যবহারকারীদের জন্য ব্যবহৃত হয়। উদ্দীপকগুলি ইতিবাচক বা নেতিবাচক হতে পারে, তবে অন্য সাইন বিট সংরক্ষণের পরিবর্তে এগুলি এনকোড করা হয়েছে যে 10000000 0 প্রতিনিধিত্ব করে, সুতরাং 00000000 -128 প্রতিনিধিত্ব করে এবং 11111111 127 প্রতিনিধিত্ব করে।
বাকি বিটগুলি তাৎপর্যের জন্য ব্যবহৃত হয়। প্রতিটি বিট বাম থেকে 2 গণনার নেতিবাচক শক্তির প্রতিনিধিত্ব করে, তাই:
01101 = 0 * 2 -1 + 1 * 2 -2 + 1 * 2 -3 + 0 * 2 -4 + 1 * 2 -5
= 0.25 + 0.125 + 0.03125
= 0.40625
কিছু প্ল্যাটফর্ম হ'ল সর্বদা 1 তে সেট করা অর্থের মধ্যে একটি "লুকানো" শীর্ষস্থানীয় বিট ধরে থাকে, তাই তাত্পর্যপূর্ণ মানগুলি সর্বদা [0.5, 1) এর মধ্যে থাকে। এটি এই প্ল্যাটফর্মগুলিকে কিছুটা বৃহত্তর নির্ভুলতার সাথে মানগুলি সঞ্চয় করতে দেয় (নীচের দিকে আরও)। আমার উদাহরণটি এটি করে না।
সুতরাং আমাদের 3.14159 এর মানটি এমন কিছু হিসাবে উপস্থাপিত হবে
0 10000010 11001001000011111100111
^ ^ ^
| | |
| | + --- তাৎক্ষণিক = 0.7853975 ...
| |
| + ------------------- প্রকাশক = 2 (130 - 128)
|
+ ------------------------- সাইন = 0 (ধনাত্মক)
মান = -1 (সাইন) * 2 (উদ্ঘাটনকারী) * (গুরত্বপূর্ণ)
মান = -1 0 * 2 2 * 0.7853975 ...
মান = 3.14159 ...
এখন, আপনি যদি লক্ষ্য করে যে সমস্ত বিট যোগ করেন তবে তা লক্ষ্য করুন যে সেগুলি মোট 0.7853975 নয়; এগুলি আসলে 0.78539747 এ চলে আসে। হুবহু মানটি সংরক্ষণ করার জন্য পর্যাপ্ত পরিমাণে বিট নেই ; আমরা কেবল একটি আনুমানিক সঞ্চয় করতে পারি। তাত্পর্যপূর্ণ বিটের সংখ্যা নির্ভুলতা নির্ধারণ করে বা আপনি কতগুলি উল্লেখযোগ্য সংখ্যা সঞ্চয় করতে পারেন তা নির্ধারণ করে । 23 বিট আমাদের সূক্ষ্মতার প্রায় 6 দশমিক সংখ্যা দেয়। -৪-বিট ভাসমান বিন্দু ধরণের যথার্থতার জন্য প্রায় 12 থেকে 15 ডিজিট দিতে তাত্পর্যপূর্ণ পর্যায়ে যথেষ্ট পরিমাণে বিট সরবরাহ করে। কিন্তু সচেতন যে মান প্রতিনিধিত্ব করা যাবে না ঠিক কোন ব্যাপার আছে হতে কিভাবেআপনি ব্যবহার অনেক বিট। ১/৩ এর মতো মানগুলি দশমিক অঙ্কের একটি সীমাবদ্ধ সংখ্যায় প্রতিনিধিত্ব করা যায় না, তেমনি 1/10 এর মতো মানগুলিও বিটগুলির একটি সীমাবদ্ধ সংখ্যায় প্রতিনিধিত্ব করা যায় না। যেহেতু মানগুলি আনুমানিক, তাই তাদের সাথে গণনাগুলিও আনুমানিক এবং গোলাকার ত্রুটিগুলি জমে।
ব্যয়কারীর বিটের সংখ্যা ব্যাপ্তি নির্ধারণ করে (আপনি উপস্থাপন করতে পারবেন ন্যূনতম এবং সর্বাধিক মান)। তবে আপনি যখন আপনার সর্বনিম্ন এবং সর্বাধিক মানের দিকে এগিয়ে যান, উপস্থাপনযোগ্য মানগুলির মধ্যে ব্যবধানের আকারটি বৃদ্ধি পায়। এটি হ'ল যদি আপনি ঠিক 0.785397 এবং 0.785398 এর মধ্যে মানগুলি উপস্থাপন করতে না পারেন তবে আপনি 7.85397 এবং 7.85398 এর মধ্যে বা 78.5397 এবং 78.5398 এর মধ্যে মানগুলি বা 785397.0 এবং 785398.0 এর মধ্যে মানগুলি যথাযথভাবে উপস্থাপন করতে পারবেন না। খুব অল্প সংখ্যায় খুব বড় (বিশালতার দিক দিয়ে) সংখ্যাগুলির গুণনের সময় সতর্কতা অবলম্বন করুন।