বিভিন্ন সংখ্যক ডেটা ধরণের সাথে আপনার কেন উদ্বিগ্ন হওয়ার দুটি কারণ রয়েছে।
1. স্মৃতি সংরক্ষণ করা
for(long k=0;k<=10;k++)
{
//stuff
}
কেন এটি দীর্ঘ ব্যবহার করতে পারে যখন এটি ঠিক সহজেই পূর্ণসংখ্যার, বা বাইট হতে পারে? আপনি আসলে মেমরির কিছু বাইট সংরক্ষণ করে তা করে।
২.ফ্লোটিং পয়েন্ট নম্বর এবং পূর্ণসংখ্যার নম্বর কম্পিউটারে আলাদাভাবে সংরক্ষণ করা হয়
ধরা যাক আমরা একটি পূর্ণসংখ্যার মধ্যে 22 নম্বর সঞ্চিত আছে। কম্পিউটার এই সংখ্যাটি মেমরিতে বাইনারি হিসাবে সংরক্ষণ করে:
0000 0000 0000 0000 0000 0000 0001 0110
আপনি যদি বাইনারি নম্বর সিস্টেমের সাথে পরিচিত না হন তবে এটি বৈজ্ঞানিক স্বরলিপি হিসাবে প্রতিনিধিত্ব করতে পারে: 2 ^ 0 * 0 + 2 ^ 1 * 1 + 2 ^ 2 * 1 + 2 ^ 3 * 0 + 2 ^ 4 * 1 + 2 ^ 5 * 0 + ... + 2 ^ 30 * 0। সংখ্যাটি নেতিবাচক কিনা তা চিহ্নিত করতে শেষ বিটটি ব্যবহৃত হতে পারে বা নাও (ডাটা টাইপ স্বাক্ষরিত বা স্বাক্ষরিত না হলে নির্ভর করে)।
মূলত, এটি কেবলমাত্র 2 ^ (বিট স্থান) * মানের একটি যোগফল।
আপনি দশমিক বিন্দুতে জড়িত মানগুলি উল্লেখ করার সময় এই পরিবর্তন হয়। ধরুন আপনার দশমিক দশমিক ৩75 নম্বর রয়েছে। এটি বাইনারি 11.11 হিসাবে উল্লেখ করা হয়। আমরা এটিকে বৈজ্ঞানিক স্বরলিপি হিসাবে 2 ^ 1 * 1 + 2 ^ 0 * 1 + 2 ^ -1 * 1 + 2 ^ -2 * 1 বা সাধারণীকরণ হিসাবে 1.111 * 2 ^ 2 হিসাবে উপস্থাপন করতে পারি
কম্পিউটার এটি সংরক্ষণ করতে পারে না: এটিতে বাইনারি পয়েন্টটি প্রকাশ করার কোনও স্পষ্ট পদ্ধতি নেই (দশমিক পয়েন্টের বাইনারি সংখ্যা সিস্টেম সংস্করণ)। কম্পিউটারটি কেবল 1 এবং 0 এর স্টোর রাখতে পারে। এখানেই ভাসমান পয়েন্টের ডেটা টাইপ আসে।
আকার (ফ্লোট) 4 বাইট হিসাবে ধরে নেওয়া হয়, তারপরে আপনার কাছে মোট 32 বিট রয়েছে। প্রথম বিটটি "সাইন বিট" বরাদ্দ করা হয়। কোনও স্বাক্ষরবিহীন ফ্লোট বা ডাবলস নেই। পরবর্তী 8 টি বিট "অভিযাত্রী" এবং চূড়ান্ত 23 বিটগুলি "হিপেনড" (বা কখনও কখনও ম্যান্টিসার হিসাবে পরিচিত) হিসাবে ব্যবহৃত হয়। আমাদের ৩.75৫ উদাহরণ ব্যবহার করে, আমাদের সূচকটি 2 ^ 1 হবে এবং আমাদের তাত্পর্যটি 1.111 হবে।
প্রথম বিটটি যদি 1 হয় তবে সংখ্যাটি নেতিবাচক। যদি না হয় তবে ইতিবাচক। "বেইস" নামক কিছু দ্বারা এক্সপোনেন্টটি সংশোধন করা হয়, তাই আমরা সহজেই "0000 0010" কে घाষ্টাকার হিসাবে সঞ্চয় করতে পারি না। একক নির্ভুলতা ভাসমান পয়েন্ট সংখ্যাটির পক্ষপাত 127 এবং ডাবল নির্ভুলতার জন্য পক্ষপাত (এটি এখানে ডাবল ডেটাটাইপটির নাম হয়) 1023. চূড়ান্ত 23 বিটগুলি তাৎপর্যের জন্য সংরক্ষিত। তাৎপর্য হ'ল আমাদের বাইনারি পয়েন্টের রাইটের মানগুলি।
আমাদের সূচকটি বায়াস (127) + এক্সপোনেন্ট (1) বা বাইনারি হিসাবে উপস্থাপিত হবে
1000 0000
আমাদের তাত্পর্যটি হ'ল:
111 0000 0000 0000 0000 0000
সুতরাং, 3.75 হিসাবে প্রতিনিধিত্ব করা হয়:
0100 0000 0111 0000 0000 0000 0000 0000
এখন, আসুন 8 নম্বরটি ভাসমান পয়েন্ট সংখ্যা এবং পূর্ণসংখ্যার সংখ্যা হিসাবে প্রতিনিধিত্ব করুন:
0100 0001 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 1000
কীভাবে কম্পিউটারে কম্পিউটার 8.0 এবং 8 যুক্ত করতে চলেছে? বা এমনকি তাদের গুণ !? কম্পিউটারে (আরও নির্দিষ্টভাবে, x86 কম্পিউটার) সিপিইউর বিভিন্ন অংশ রয়েছে যা ভাসমান পয়েন্ট সংখ্যা এবং পূর্ণসংখ্যার সংখ্যা যুক্ত করে।