বিটওয়াইজ অপারেশনগুলি ব্যবহার করার সুবিধা কী কী? [বন্ধ]


19

সর্বশেষতম কোডপ্রজেক্ট নিউজলেটারটি পড়ার পরে, আমি বিটওয়াইজ অপারেশনগুলিতে এই নিবন্ধটি জুড়ে এসেছি । এটি আকর্ষণীয় পড়ার জন্য তৈরি করে, এবং আমি অবশ্যই কোনও পূর্ণসংখ্যা সমান বা বিজোড় কিনা তা পরীক্ষার সুবিধাটি দেখতে পাচ্ছি, তবে এন-বিট সেট করা আছে কিনা তা পরীক্ষা করে দেখছি? এর সুবিধাগুলি কী হতে পারে?

উত্তর:


27

এম্বেড থাকা সিস্টেমে প্রোগ্রামিং হার্ডওয়্যার নিবন্ধ করার সময় বিটওয়াইজ অপারেশনগুলি একেবারে প্রয়োজনীয়। উদাহরণস্বরূপ, আমি যে প্রসেসরটি আমি কখনও ব্যবহার করেছি তার একটি বা একাধিক নিবন্ধ (সাধারণত একটি নির্দিষ্ট মেমরি ঠিকানা) থাকে যা একটি বিঘ্ন সক্ষম বা অক্ষম কিনা তা নিয়ন্ত্রণ করে। স্বাভাবিক প্রক্রিয়াটিকে বাধা দিতে বাধা দেওয়ার জন্য সেই বিঘ্নিত টাইপের জন্য সক্ষম বিট সেট করা হয়, সর্বাগ্রে গুরুত্বপূর্ণ, নিবন্ধের অন্যান্য বিটগুলির মধ্যে কোনওটি পরিবর্তন না করে।

যখন কোনও বাধা আগুন লাগে তখন এটি একটি স্ট্যাটাস রেজিষ্টারে সাধারণত কিছুটা সেট করে যাতে একক পরিষেবা রুটিন বাধার জন্য যথাযথ কারণ নির্ধারণ করতে পারে। পৃথক বিট পরীক্ষা করা বিঘ্নিত উত্সের দ্রুত ডিকোড করার অনুমতি দেয়।

অনেক এম্বেড থাকা সিস্টেমে মোট র‌্যাম পাওয়া যায় 64৪, ১২৮ বা ২৫ B বিটাইট (এটি বাইটগুলি কিলোবাইট বা মেগাবাইট নয়) এই পরিবেশে একাধিক ডেটা আইটেম, বুলিয়ান ফ্ল্যাগ ইত্যাদি সংরক্ষণ করার জন্য একটি বাইট ব্যবহার করা এবং পরে বিট ক্রিয়াকলাপগুলি ব্যবহার করা সাধারণ এই সেট এবং পড়তে।

আমি বেশ কয়েক বছর ধরে একটি উপগ্রহ যোগাযোগ ব্যবস্থা নিয়ে কাজ করে যাচ্ছি যেখানে বার্তা পেলোড 10.5 বাইট। এই ডেটা প্যাকেটের সর্বোত্তম ব্যবহার করতে ক্ষেত্রগুলির মধ্যে কোনও অব্যবহৃত বিট না রেখে তথ্য অবশ্যই ডেটা ব্লকে প্যাক করতে হবে। এর অর্থ হ'ল বিটওয়াইজ এবং শিফ্ট অপারেটরগুলির তথ্যের মানগুলি গ্রহণের জন্য এবং প্রেরণযোগ্য পেওডে প্যাক করার জন্য বিস্তৃত ব্যবহার করা।


4
আরও বুলিয়ান বিট ক্রিয়াকলাপ এবং অপ্টিমাইজেশানগুলিতে
আগ্রহীদের জন্য

7

মূলত, আপনি আকার এবং গতির বিবেচনার কারণে এগুলি ব্যবহার করেন। বিটওয়াইজ অপারেশনগুলি অবিশ্বাস্যরকম সহজ এবং সাধারণত গাণিতিক ক্রিয়াকলাপগুলির চেয়ে দ্রুত হয়। উদাহরণস্বরূপ একটি আরজিবি মানের সবুজ অংশ পেতে, পাটিগণিত পদ্ধতির হয় (rgb / 256) % 256। , Bitwise অপারেশন আপনি কিছু করতে হবে (rgb >> 8) & 0xFF। পরেরটি উল্লেখযোগ্যভাবে দ্রুত এবং একবার আপনি এটি ব্যবহার করতে সক্ষম হয়ে গেলে এটি আরও সহজ easier সাধারণত যখন আপনার কোনও কমপ্যাক্ট এবং দ্রুত উপায়ে ডেটা এনকোড / ডিকোড করা প্রয়োজন তখন বিটওয়াইজ অপারেশনগুলি প্রচুর পরিমাণে কার্যকর হয়।


2
BYTE g1 = (rgb / 256) % 256; 00E51013...C1 E9 08...shr ecx,8 00E51016...88 0C 24...mov byte ptr [esp],cl
rwong

4

এম্বেড থাকা সিস্টেমগুলির জন্য লেখার সময় এই ধরণের অপারেশনগুলি প্রায়শই ব্যবহৃত হয় যেখানে মেমরি বা সিপিইউ শক্তি সীমাবদ্ধ।

উদাহরণস্বরূপ, স্থান বাঁচাতে আপনি বুলিয়ান উপস্থাপন করতে প্রতিটি বিট ব্যবহার করে একক 8-বিট ইন্ট ভেরিয়েবলে একাধিক ভেরিয়েবল সঞ্চয় করতে পারেন। তারপরে আপনার একটি নির্দিষ্ট বিট সেট করতে বা বিটের মানটি পুনরুদ্ধার করার জন্য দ্রুত উপায় প্রয়োজন।

সাধারণত যখন গিগাবাইটের মেমরির ডেস্কটপ পিসিতে উচ্চ স্তরের ভাষাগুলিতে সি # এর মতো প্রোগ্রামিং করা থাকে তখন আপনি সত্যিই যত্নবান হন না যে প্রতিটি bool একটি পুরো বাইট নেয় । আপনি যদি 2 কেবি মেমরির সাথে সিতে একটি মাইক্রোকন্ট্রোলার প্রোগ্রামিং করেন তবে প্রতিটি একক বিট গণনা করা হয়, তাই 8 টি বোলকে একটি বাইটে প্যাক করার ক্ষমতাটি গুরুতর হতে পারে।


.NET এর একটি [Flags]বৈশিষ্ট্য রয়েছে যা Enumএকটি বিট ফিল্ড হিসাবে ব্যবহার করতে দেয় । উদাহরণস্বরূপ, এর Fontএমন একটি Styleসম্পত্তি রয়েছে যা কিছুটা ক্ষেত্র যেখানে গা bold়, তির্যক, আন্ডারলাইন এবং স্ট্রাইকথ্রু রয়েছে।
ডেল্ট্রিম

@deltreme। হ্যাঁ আমি জানি আপনি [পতাকা] ব্যবহার করতে পারেন তবে এটি মুল নয়। মুল বক্তব্যটি হ'ল উচ্চ স্তরের ভাষাগুলিতে আপনি কয়েকটা বুলের জন্য কয়েক বাইট স্পেস ব্যবহার করার বিষয়ে তেমন চিন্তা করেন না। আপনি সাধারণত রক্ষণাবেক্ষণ এবং কোড পঠনযোগ্যতা সম্পর্কে আরও যত্নশীল। এম্বেড থাকা সিস্টেমে যেখানে আপনি আকারের যত্ন নিয়ে থাকেন, আপনি। নেট [ফ্ল্যাগস] অ্যাট্রিবিউটের মতো জিনিসগুলিতে অ্যাক্সেস পাবেন না, যাতে আপনি এই বিটওয়াইজ অপারেশনগুলি ব্যবহার করতে পারেন।
সাইমন পি স্টিভেন্স

"তবে এন-থ বিট সেট করা আছে কিনা তা পরীক্ষা করা হচ্ছে? সম্ভবত এর সুবিধাগুলি কী হতে পারে?" সুতরাং এটি মূল বিষয় - তবে যেহেতু কোনও ভাষা নির্দিষ্ট করা হয়নি আমি সি উত্তর উল্লেখ করা হয়েছে এমন উত্তরের মন্তব্য হিসাবে এটি প্রবেশ করার সিদ্ধান্ত নিয়েছি। এটি আপনার উত্তরের মন্তব্য নয়, এটি একটি সংযোজন, বা জানা-জানা বা যা কিছু।
ডেল্ট্রিম

@ ডেল্ট্রিম: ওহ, দুর্দান্ত
সাইমন পি স্টিভেনস

3

বিটওয়াইজ অপারেশনগুলি এম্বেডড ইলেক্ট্রনিক্সের মতো একই কারণে ভিডিও এবং অডিও কোডেকগুলিতেও প্রায়শই ব্যবহৃত হয়; আপনি যখন একটি সুপার-দক্ষ ভিডিও কোডেক বানাতে চান তখন পাঁচটি পতাকা এবং একটি এগারো বিট টাইমারকে অর্ধেকটি ইন প্যাক করতে সক্ষম হওয়াই খুব দরকারী।

আসলে, এমপিইজি 4 এমনকি ভেরিয়েবল-বিট-দৈর্ঘ্যের ক্ষেত্রগুলির জন্য ক্ষতিকারক গোলম্ব এনকোডিং ব্যবহার করে uses 17 বা 19 বিট প্রস্থের সর্বশেষ প্যাকেটের মানটি এই প্যাকেটটিতে কেবল তিন বা পাঁচ বিট প্রস্থ হতে পারে - এবং আপনি বিটওয়াইস ক্রিয়াকলাপের সাথে সমস্ত কিছু খুঁজে বের করতে পারেন।


2

কৌশলগুলি যেগুলি বিটওয়াইজ লজিকাল অপারেশনগুলি, বিটওয়াইড শিফট অপারেশনগুলি এবং গাণিতিক ক্রিয়াকলাপগুলিকে একত্রিত করে তারা লজিক গেটগুলি (এবং, বা, না) ব্যবহার করে বাইনারি সংযোজনকারী নির্মাণের বিষয়ে পড়াশোনা করেছে by এই চেনাশোনার বাইরে, বিস্তারিত মন্তব্য না করে বোঝা খুব কঠিন।

সিমডি ইউনিটগুলি প্রোগ্রামিং করার সময় এটি কার্যকর হয় , বিশেষত যদি সিপিইউয়ের আর্কিটেকচারটি ইচ্ছাকৃতভাবে কিছু সিমডি নির্দেশনা বাদ দেয় কারণ তারা অন্য কয়েকজন দ্বারা অনুকরণ করা যায়।

উদাহরণস্বরূপ, আর্কিটেকচার 16 টি বাইটের একটি গ্রুপের নেতিবাচক মানগুলি গ্রহণের জন্য কোনও নির্দেশনা সংজ্ঞায়িত করতে পারে না তবে এটি বিটভাইজ অবহেলা করে এবং পরে ১ যোগ করে অনুকরণ করা যেতে পারে একইভাবে, বিয়োগফলও বাদ দেওয়া যেতে পারে, কারণ এটি গ্রহণ করে অনুকরণ করা যেতে পারে দ্বিতীয় অপারেন্ডের নেতিবাচক। "বিকল্প রুট" এর উপলভ্যতা নির্দিষ্ট নির্দেশাবলী বাদ দেওয়ার কারণ।

তেমনি, সিমড 16-বিট, 32-বিট বা 64-বিটের মতো বৃহত্তর উপাদানগুলির জন্য অতিরিক্ত প্রয়োগ না করে কেবল সমান্তরাল 8-বিট সংযোজনকে সমর্থন করতে পারে support তাদের অনুকরণ করার জন্য, 8-বিট গণনার ফলাফল থেকে সাইন বিটটি বের করতে হবে, তারপরে পরবর্তী উপাদানটিতে ক্যারি অপারেশন করুন।


0

প্যাকিং ডেটা, দ্রুত অপস (গুণ, বিভাগ এবং মডুলাস উল্লেখযোগ্যভাবে দ্রুত হয় যদি 2 এর শক্তিতে সংযুক্ত থাকে), বিট ফ্লিপিং ইত্যাদি etc. সেগুলি শিখুন এবং সেগুলি ব্যবহার শুরু করুন এবং আপনি ধীরে ধীরে নিজের সুবিধাগুলি সর্বাধিক দেখতে শুরু করবেন।


1
এটি একটি বরং অर्थোগোনাল উত্তর।
itbruce
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.