সি ভাষায় বিটওয়াইজ অপারেটর

Bitwise Operators C Language



বিটওয়াইজ অপারেটর, যা প্রায়শই বিট-লেভেল কোডিং নামে পরিচিত, শুধুমাত্র বিট লেভেলে ডেটা ব্যাখ্যা করার জন্য কাস্ট-অফ করা হয়েছে। বিটওয়াইজ বিট লেভেলে এক বা এমনকি অতিরিক্ত বিট প্যাটার্ন এবং বাইনারি সংখ্যায় অপারেশন করে। এগুলি সংখ্যাসূচক গণনার অনুমান অগ্রগতির গতি বাড়ানোর জন্য ব্যবহার করা হয়েছে। এটি দুটি সংখ্যা নিয়ে গঠিত, যার মধ্যে একটি 0 এবং অন্যটি 1। এখানে কিছু বিটওয়াইজ অপারেটর রয়েছে যা আমরা আমাদের নিবন্ধে আলোচনা করব।

আপনার লিনাক্স সিস্টেম থেকে লগইন করুন এবং কনসোল টার্মিনাল খোলার জন্য Ctrl+Alt+T শর্টকাট চেষ্টা করুন। সি ভাষায় বিটওয়াইজ অপারেটরদের ক্রিয়াকলাপ সম্পর্কে বিস্তারিত জানার জন্য আমাদের কাছে কিছু উদাহরণ থাকবে। আসুন প্রতিটি বিটওয়াইজ অপারেটরকে আলাদাভাবে বিশদ করি।







বিটওয়াইজ এবং:

বিটওয়াইজ অপারেটরটি ফলাফলের জন্য কিছুটা প্রতিলিপি করতে ব্যবহৃত হয়েছে যদি সেই বিট উভয় পারস্পরিক পরিচালনায় উপস্থিত থাকে। C বা C ++ এর জন্য 2 টি অপারেন্ড প্রয়োজন যা এই দুটি পূর্ণসংখ্যার প্রতিটি বিটে সঞ্চালন করে। বিটওয়াইজ এবং ফলাফল 1 যখন উভয় বিটের মান 1 হয়। সুতরাং, কাজটি বুঝতে, ন্যানো এডিটর ব্যবহার করে একটি সি টাইপ ফাইল তৈরি করুন এবং খুলুন। এর জন্য, আমাদের শেলের মধ্যে ন্যানো নির্দেশনাটি নিম্নরূপ গ্রহণ করতে হবে:



$ন্যানোtest.c



বিটওয়াইজ এবং অপারেটরের কোড নীচের ছবিতে প্রদর্শিত হয়েছে। আপনাকে শুধু এই কোডটি আপনার GNU ন্যানো এডিটর ফাইল test.c এ লিখতে হবে। এই কোডটিতে stdio.h হেডার লাইব্রেরি আছে যা ছাড়া আমরা C প্রোগ্রামিং এ কোডিং করতে পারি না। তারপরে আমরা একটি প্রধান পদ্ধতি তৈরি করেছি যার রিটার্ন টাইপ পূর্ণসংখ্যা হিসাবে। সি ভাষায়, কোডটি কার্যকর করা হয় প্রধান পদ্ধতির মাধ্যমে। তাই আমরা দুটি পূর্ণসংখ্যা টাইপ ভেরিয়েবল ঘোষণা করেছি, x এবং y, সেই অনুযায়ী 35 এবং 13 এর মান। এর পরে, আরেকটি পূর্ণসংখ্যা পরিবর্তনশীলকে তার মান হিসাবে শূন্য দিয়ে নির্দিষ্ট করা হয়েছে। আমরা প্রথম দুটি পূর্ণসংখ্যা ভেরিয়েবল ব্যবহার করব এবং তাদের মধ্যে বিটওয়াইজ এবং অপারেটর প্রয়োগ করব। এই কাজটি পরবর্তী লাইনে করা হয়েছে যেখানে AND অপারেটরকে & হিসাবে ব্যবহার করা হয়েছে, এবং ফলস্বরূপ মানটি নাল ভেরিয়েবল z তে সংরক্ষণ করা হবে। তারপরে আমরা টার্মিনাল স্ক্রিনে ফলাফল মান দেখানোর জন্য মুদ্রণ বিবৃতি ব্যবহার করেছি এবং মূল পদ্ধতিটি বন্ধ হয়ে গেছে। GNU শর্টকাট Ctrl+S ব্যবহার করে আপনার ফাইল সংরক্ষণ করুন এবং তারপর কীবোর্ড টাইপরাইটার থেকে Ctrl+X এর মাধ্যমে ন্যানো এডিটর ছেড়ে দিন।





সুতরাং, ফাইলটি সংরক্ষণ করার পরে উপরের কোডটি সংকলনের সময়। আপনার কনসোল শেলের মধ্যে gcc নির্দেশ ব্যবহার করুন যখন একটি ফাইলের নাম test.c হিসেবে ব্যবহার করুন অথবা যেটা আপনি ফাইলের নাম দিন এবং এন্টার কী চাপুন। আপনি দেখতে পারেন এটি কোন ত্রুটি দেখায় না; এর মানে হল কোডটি ম্যানুয়ালি সঠিক।



$gcctest.c

কোডটি কম্পাইল করার পরে, এখনই কোডটি চালানোর সময়। এই উদ্দেশ্যে, শেলের মধ্যে বর্ণিত-নীচের প্রশ্নটি চালান। আউটপুট একটি ফলাফল হিসাবে 1 দেখায়। এর মানে হল আমাদের পূর্ণসংখ্যা ভেরিয়েবলের উভয়ই তাদের একটি বিটে 1। এই কারণেই এটি 1 ফেরত দেয়।

$/a. আউট

বিটওয়াইজ বা:

এখন, এটি বিটওয়াইজ বা অপারেটরকে বিশদভাবে ব্যাখ্যা করার জন্য পরিণত হয়েছে। বিটওয়াইজ অপারেটর ফলস্বরূপ 1 প্রদান করে যখন এর একটি বিট 1 হয়। যদি দুটি পূর্ণসংখ্যার উভয় বিট 0 হয়, তাহলে এটি 0. উৎপাদন করে। আমাদের দেখতে হবে সেই বিটগুলি কত সংখ্যায় গঠিত। সুতরাং, প্রথমে একই test.c ডকুমেন্ট খুলুন। Ctrl+S কী ব্যবহার করে GNU ফাইলে দেখানো-নিচের কোডটি টাইপ করুন এবং সেভ করুন। কোডটি উপরের বিটওয়াইজ এবং অপারেটরের উদাহরণের মতো প্রায় একই। এইবার আমরা শুধু পূর্ণসংখ্যা x এর মান 47 তে পরিবর্তন করেছি, এবং আমরা OR অপারেটর ব্যবহার করেছি, যেমন | উভয় ভেরিয়েবলের মধ্যে। কোড কম্পাইল করার জন্য ফাইলটি ছেড়ে দিন।

ডকুমেন্ট test.c সফলভাবে চালানোর পর, এটি 47 আউটপুট বিট দেখায়।

$/a. আউট

বিটওয়াইজ XOR:

বিটওয়াইজ অপারেটর 1 রিটার্ন করে যখন উভয় সংখ্যার বিট আলাদা। সুতরাং যখন বিট সমান হয়, তখন এটি 0. উৎপাদন করবে। ^ অপারেটর চিহ্নটি বিটওয়াইজ অপারেটরকে প্রতিনিধিত্ব করবে। তাই আবার, ডকুমেন্টটি খুলুন এবং একই পুরানো কোডটি GNU ফাইল এডিটরে লিখুন। এবার আমরা দুটি পূর্ণসংখ্যার ভেরিয়েবলের মধ্যে ^ অপারেটর ব্যবহার করছি এবং টার্মিনালে প্রিন্ট করার সময় ফলাফল z ভেরিয়েবলে সংরক্ষণ করা হবে।

কম্পাইল এবং ফাইল test.c রিটার্ন 34 ফলস্বরূপ। এর মানে XOR অপারেটর দুটি পূর্ণসংখ্যা ভেরিয়েবলে প্রয়োগ করার পর নতুন পূর্ণসংখ্যা 34 তৈরি হয়।

$/a. আউট

Bitwise সম্পূরক:

এই অপারেটর শুধুমাত্র একটি একক পরিবর্তনশীল প্রয়োগ করা হবে, এবং এটি বিট সংখ্যার মান প্রত্যাবর্তন করবে। উদাহরণস্বরূপ, এটি 0 বিটকে 1 এবং 1 থেকে 0 বিটে পরিবর্তন করবে। একই ফাইলে একই কোড লিখুন কিন্তু লাইন 6 এ সামান্য পরিবর্তন সহ আমরা x এর বিপরীতে z কে বরাদ্দ করেছি।

ফাইলটি কম্পাইল করে রান করুন। সি -তে, বিটওয়াইজ পরিপূরকটির ফলাফল একটি নেতিবাচক চিহ্ন সহ 1 দিয়ে বৃদ্ধি করা হয়েছে।

বাম শিফট অপারেটর:

এটি বিটগুলির স্থানটিকে কিছুটা হলেও স্থানান্তরিত করবে। নিচের ছবিটিতে একই কোড প্রদর্শিত হতে পারে। এই উদাহরণে, আমরা বাম দিকে 2 বিট স্থানান্তরিত করব।

আউটপুট 188 একটি নতুন উৎপন্ন মান হিসাবে দেখায়।

$/a. আউট

রাইট শিফট অপারেটর:

এটি বাম শিফটের মতোই কাজ করে কিন্তু বিপরীত দিকে, যেমন নীচের কোডে দেখানো হয়েছে।

এবার আমরা 2 টি বিট ডান দিকে স্থানান্তর করার সময় আউটপুট হিসাবে 11 পেয়েছি।

$/a. আউট

উপসংহার:

আমরা এই প্রবন্ধে আমাদের সি ভাষা কোডে সমস্ত মৌলিক 6 বিটওয়াইজ অপারেটরকে অন্তর্ভুক্ত করেছি। আমি আশা করি আপনি আমাদের গাইড থেকে যা চেয়েছিলেন তা পেয়েছেন।