Offset (computer science)
কম্পিউটার বিজ্ঞানে, একটি অ্যারে বা অন্যান্য ডেটা স্ট্রাকচার অবজেক্টের মধ্যে একটি অফসেট হল একটি পূর্ণসংখ্যা যা বস্তুর শুরু এবং একটি প্রদত্ত উপাদান বা বিন্দুর মধ্যে দূরত্ব (স্থানচ্যুতি) নির্দেশ করে, সম্ভবত একই বস্তুর মধ্যে। দূরত্বের ধারণাটি তখনই বৈধ হয় যখন বস্তুর সমস্ত উপাদান একই আকারের হয় (সাধারণত বাইটে বা শব্দে দেওয়া হয়)। উদাহরণস্বরূপ, যদি এ "এবিসিডিএফ" ধারণকারী অক্ষরের একটি অ্যারে হয়, তবে 'ডি' অক্ষর ধারণকারী চতুর্থ উপাদানটির এ-এর শুরু থেকে তিনটি অফসেট থাকে। অ্যাসেম্বলি ল্যাঙ্গুয়েজে কম্পিউটার ইঞ্জিনিয়ারিং এবং নিম্ন-স্তরের প্রোগ্রামিংয়ে (যেমন অ্যাসেম্বলি ল্যাঙ্গুয়েজ), একটি অফসেট সাধারণত একটি নির্দিষ্ট পরম ঠিকানায় পৌঁছানোর জন্য একটি মূল ঠিকানায় যোগ করা ঠিকানার অবস্থানের সংখ্যা বোঝায়। অফসেটের এই (মূল) অর্থে, শুধুমাত্র মৌলিক ঠিকানা একক, সাধারণত 8-বিট বাইট, অফসেটের আকার নির্দিষ্ট করতে ব্যবহৃত হয়। এই প্রসঙ্গে একটি অফসেটকে কখনও কখনও আপেক্ষিক ঠিকানা বলা হয়। আইবিএম সিস্টেম/360 নির্দেশাবলীতে, নির্দিষ্ট নির্দেশাবলীর মধ্যে এম্বেড করা একটি 12-বিট অফসেট 0 থেকে 4096 বাইটের মধ্যে একটি পরিসীমা প্রদান করে। উদাহরণস্বরূপ, একটি শর্তহীন শাখা নির্দেশের (এক্স '47এফ0এফএক্সএক্স') মধ্যে, এক্সএক্সএক্স 12 বিট হেক্সাডেসিমাল অফসেট বেস রেজিস্টার (15) থেকে শাখা পর্যন্ত বাইট অফসেট প্রদান করে। একটি বিজোড় অফসেট একটি প্রোগ্রাম চেকের কারণ হতে পারে (যদি না বেস রেজিস্টারে নিজেই একটি বিজোড় ঠিকানা থাকে)-যেহেতু কোনও প্রোগ্রাম বা হার্ডওয়্যার বাধা ছাড়াই চালানোর জন্য নির্দেশাবলীকে অর্ধ-শব্দের সীমানায় সারিবদ্ধ করতে হত। পূর্ববর্তী উদাহরণটি সেগমেন্টের বিন্যাসে একটি মেমরি অবস্থানকে সম্বোধন করার একটি পরোক্ষ উপায় বর্ণনা করেঃ অফসেট। উদাহরণস্বরূপ, ধরে নিন যে আমরা স্মৃতির অবস্থান 0xF867 উল্লেখ করতে চাই। এটি সম্পন্ন করার একটি উপায় হল প্রথমে 0xF000 প্রারম্ভিক ঠিকানা সহ একটি বিভাগকে সংজ্ঞায়িত করা এবং তারপরে 0x0867 এর একটি অফসেট সংজ্ঞায়িত করা। উপরন্তু, আমাদের চূড়ান্ত পরম মেমরি ঠিকানায় পৌঁছানোর জন্য হেক্সাডেসিমাল বিভাগটি স্থানান্তর করার অনুমতি দেওয়া হয়। এখানে একটি বিষয় লক্ষণীয় যে আমরা বিভিন্ন উপায়ে আমাদের চূড়ান্ত পরম ঠিকানায় পৌঁছাতে পারি। একটি অফসেট সর্বদা মডিউলটির মূল ঠিকানার সাথে সম্পর্কিত নয়, উদাহরণস্বরূপঃ আপনার যদি একটি ক্লাস (জিইউআই) থাকে এবং আপনি এই শ্রেণীর "রঙ" বৈশিষ্ট্যটি পুনরুদ্ধার করতে চান, তবে অফসেটটি 0x0100 হতে পারে, তবে এই অফসেটটি ক্লাসের অফসেটে যোগ করতে হবে, মূল ঠিকানায় নয়। যদি ক্লাসের অফসেট 0xFF881 হয় এবং মূল ঠিকানা 0x0A100 হয়, তাহলে "রঙ" বৈশিষ্ট্যটি পুনরুদ্ধারের জন্য উভয় অফসেটই মূল ঠিকানায় যোগ করা হয়। 0x0A100 (ভিত্তি) + 0xFF881 (শ্রেণী) + 0x0100 (বৈশিষ্ট্য)। শেষ পর্যন্ত বৈশিষ্ট্যটির ঠিকানা হবে 0x109A81। একসাথে যোগ করা অফসেটগুলির একটি সংগ্রহ কম্পিউটার প্রোগ্রামিং হিসাবে পরিচিত। আরও দেখুন অ্যারে ইনডেক্স কম্পিউটার মেমোরি