আমি সম্প্রতি কোড লিখতে শিখতে শুরু করেছি এবং আমার বইতে আমি এই প্রশ্নটি নিয়ে এসেছি। "বুলিয়ান মানটি কম্পিউটারের বাইট হিসাবে কেন সংরক্ষণ করা হয় যখন তার জন্য কেবল একটি বিট প্রয়োজন?" কেউ কি এই প্রশ্নে আরও আলোকপাত করতে পারে?
আমি সম্প্রতি কোড লিখতে শিখতে শুরু করেছি এবং আমার বইতে আমি এই প্রশ্নটি নিয়ে এসেছি। "বুলিয়ান মানটি কম্পিউটারের বাইট হিসাবে কেন সংরক্ষণ করা হয় যখন তার জন্য কেবল একটি বিট প্রয়োজন?" কেউ কি এই প্রশ্নে আরও আলোকপাত করতে পারে?
উত্তর:
সিপিইউ সহজেই কী সম্বোধন করতে পারে তার সাথে এটি করা দরকার। উদাহরণস্বরূপ একটি x86 প্রসেসরে একটি eax
(32 বিট), ax
(16 বিট) এবং একটি ah
(8 বিট) রয়েছে তবে কোনও একক বিট নিবন্ধক নেই। সুতরাং এটি একক বিট ব্যবহার করার জন্য সিপিইউতে মান পরিবর্তন করতে একটি পঠন / পরিবর্তন / লিখতে হবে। এটি যদি বাইট হিসাবে সংরক্ষণ করা হয় তবে একটি একক পঠন বা লেখার মূল্য পরীক্ষা করতে / পরিবর্তন করতে ব্যবহার করা যেতে পারে।
অতিরিক্তভাবে কেউ ভাবতে পারেন যে পুরো বাইটের তুলনায় সিঙ্গল বিট ব্যবহার করা ভাল কি না, সমস্ত বাইট পরে 7 বিট নষ্ট করবে। কমপক্ষে x86 এবং আমি মনে করি অন্যদের কাছে স্থানটি কোনও বাধা না দেওয়া উচিত কারণ একটি বিলের পঠন / পরিবর্তন / লেখার চেয়ে দ্রুত একটি সেট সেট / সাফ করার জন্য সাধারণত একটি নির্দেশনা রয়েছে । ব্যক্তিগত পরিমাপ থেকে আমি দেখেছি / পড়ার / মোড / রাইটিং পদ্ধতিটি একক নির্দেশাবলীর চেয়ে 5x ধীর হতে পারে be
@ Barrem23 ব্যাখ্যা হিসাবে , তথ্য হতে হবে Addressable , এবং প্রচলিত আর্কিটেকচারের উপর ক্ষুদ্রতম সীমানা একটি বাইট।
কিন্তু যেহেতু এই প্রশ্ন যেমন ছাগু ট্যাগ করা হয় C ++ , এটা মূল্য ইশারা আউট যে হতে পারে std::vector<bool>
হয় বিশেষ অনুমতি পৃথক উপাদান বিট হিসাবে সংরক্ষিত করা । এটি কিছু কার্যকারিতা ত্যাগ করে স্থান বাঁচাবে (উদাহরণস্বরূপ, std::search
কাজ নাও করতে পারে)।