মূলত প্রতিটি আধুনিক কম্পিউটার একটি বিট-পুশিং মেশিন। সাধারণত এটি ডেটার ক্লাস্টারে প্রায় বিট ঠেলে দেয়, যাকে বলে বাইটস, শব্দ, ডিফলার বা কিওয়ার্ডস।
একটি বাইটে 8 বিট, একটি শব্দ 2 বাইট (বা 16 বিট), একটি শব্দ 2 শব্দ (বা 32 বিট) এবং একটি কিওয়ার্ড 2 ডিওয়ার্ড (বা 64 বিট) থাকে। বিটগুলি সাজানোর একমাত্র উপায় এটি নয়। 128 বিট এবং 256 বিট ম্যানিপুলেশনটি সাধারণত সিমডের নির্দেশাবলীতে ঘটে।
সমাবেশ নির্দেশাবলী রেজিস্টার এবং মেমরি ঠিকানার উপর পরিচালিত হয় উপরের ফর্মগুলির মধ্যে সাধারণত পরিচালনা করে।
ALU (পাটিগণিত যুক্তিযুক্ত ইউনিট) বিটের এমন বান্ডিলগুলিতে এমনভাবে কাজ করে যেমন তারা পূর্ণসংখ্যার প্রতিনিধিত্ব করে (সাধারণত দুটি এর পরিপূরক বিন্যাস), এবং FPU গুলি যেন তারা যেখানে ভাসমান পয়েন্টের মান (সাধারণত আইইইই 754-শৈলী float
এবং double
)। অন্যান্য অংশগুলি এমনভাবে কাজ করবে যেমন তারা কিছু ফর্ম্যাট, অক্ষর, টেবিল এন্ট্রি, সিপিইউ নির্দেশাবলী, বা ঠিকানাগুলির বান্ডিল ডেটা।
একটি সাধারণ bit৪ বিট কম্পিউটারে, 8 বাইট (64 বিট) এর বান্ডিলগুলি ঠিকানা হয়। আমরা এই ঠিকানাগুলি হেক্স ফর্ম্যাটের মতো (যেমন 0xabcd1234cdef5678
) প্রচলিতভাবে প্রদর্শন করি তবে এটি বিট নিদর্শনগুলি পড়ার জন্য মানুষের পক্ষে সহজ উপায়। প্রতিটি বাইট (8 বিট) দুটি হেক্স অক্ষর হিসাবে লেখা হয় (সমানভাবে প্রতিটি হেক্স অক্ষর - 0 থেকে এফ - 4 বিট উপস্থাপন করে)।
আসলে যা চলছে (আসলে কিছু স্তরের জন্য) এটি হ'ল বিটগুলি সাধারণত একটি রেজিস্টারে সঞ্চিত থাকে বা মেমরি ব্যাঙ্কের সংলগ্ন স্থানে সঞ্চিত থাকে এবং আমরা কেবল তাদের অন্য কোনও মানুষের কাছে বর্ণনা করার চেষ্টা করছি।
একটি পয়েন্টার অনুসরণ করে মেমরির নিয়ামকটি সেই স্থানে আমাদের কিছু ডেটা দিতে বলে of আপনি সাধারণত কোনও নির্দিষ্ট স্থানে নির্দিষ্ট সংখ্যক বাইটের জন্য মেমরি নিয়ামককে জিজ্ঞাসা করতে চান (ভাল, স্পষ্টতই স্পেসিফিকভাবে লোকেশনগুলির একটি পরিসর, সাধারণত সংলগ্ন) এবং এটি আমার কাছে প্রবেশ না করার বিভিন্ন পদ্ধতির মাধ্যমে সরবরাহ করা হয়।
কোডটি সাধারণত ডেটা আনার জন্য একটি গন্তব্য নির্দিষ্ট করে - একটি রেজিস্টার, অন্য মেমরি ঠিকানা, ইত্যাদি - এবং সাধারণত কোনও পূর্ণসংখ্যার প্রত্যাশায় কোনও রেজিস্টারে ভাসমান পয়েন্টের ডেটা লোড করা খারাপ ধারণা।
সি / সি ++ তে থাকা ডেটার ধরণ এমন একটি বিষয় যা সংকলক ট্র্যাক করে এবং এটি কী কোড উত্পন্ন হয় তা পরিবর্তন করে। সাধারণত ডেটাতে অভ্যন্তরীণ কিছুই নেই যা এটিকে আসলে কোনও এক ধরণের করে তোলে । কোডের মাধ্যমে কেবল বিটগুলির একটি সংকলন (বাইটে সাজানো) যা পূর্ণসংখ্যার মতো পদ্ধতিতে (বা ভাসমানের মতো কোনও উপায়, বা ঠিকানার মতো) ম্যানিপুলেট করা হয়।
এই ব্যতিক্রম আছে। সেখানে আর্কিটেকচারের যেখানে কিছু জিনিস একটি ভিন্ন হয় ধরনের বিট। সর্বাধিক সাধারণ উদাহরণ সুরক্ষিত সম্পাদনা পৃষ্ঠাগুলি - সিপিইউকে যা যা করা উচিত তা বিটস নির্দেশাবলী নির্দেশের সময় চালানো সময়ে (মেমরি) কোডগুলি কার্যকর করতে কোডগুলি নির্দিষ্টভাবে চিহ্নিত করা যায়, পরিবর্তন করা যায় না এবং চিহ্নিত পৃষ্ঠাগুলি সম্পাদন করতে পারবেন না এক্সিকিউশন পেজ হিসাবে।
এছাড়াও কেবল পঠনযোগ্য ডেটা রয়েছে (কখনও কখনও রমে সংরক্ষণ করা হয় যা শারীরিকভাবে লিখিত হতে পারে না!), প্রান্তিককরণের সমস্যাগুলি (কিছু প্রসেসর double
নির্দিষ্ট উপায়ে প্রান্তিককরণ ব্যতীত মেমরি থেকে গুলি লোড করতে পারে না , অথবা সিমডি নির্দেশিকাগুলি যাতে নির্দিষ্ট প্রান্তিককরণের প্রয়োজন হয়), এবং এর মধ্যে হাজার হাজার অন্যান্য স্থাপত্য quirks।
এমনকি উপরের স্তরের বিশদটিও মিথ্যা। কম্পিউটারগুলি "বিট" বিটের চারপাশে চাপ দিচ্ছে না, তারা সত্যিই ভোল্টেজ এবং স্রোতের চারপাশে চাপ দিচ্ছে। এই ভোল্টেজ এবং বর্তমান কখনও কখনও বিটের বিমূর্তকরণ স্তরে যা করতে "অনুমিত" হয় তা করেন না। চিপগুলি এ জাতীয় বেশিরভাগ ত্রুটি সনাক্ত করতে এবং সচেতন থাকার কারণে উচ্চ স্তরের বিমূর্ততা ছাড়াই তাদের সংশোধন করার জন্য ডিজাইন করা হয়েছে।
এমনকি এটি একটি মিথ্যা।
বিমূর্ততার প্রতিটি স্তর নীচের একটিকে লুকিয়ে রাখে এবং প্রিন্ট আউট করার জন্য ফেনম্যান চিত্রগুলি মনে না রেখে সমস্যা সমাধানের বিষয়ে আপনাকে ভাবতে দেয় "Hello World"
।
সুতরাং সততার পর্যাপ্ত পর্যায়ে, কম্পিউটারগুলি বিটগুলি পুশ করে এবং সেই বিটগুলি কীভাবে ব্যবহার করা হয় তার দ্বারা অর্থ দেওয়া হয়।