ট্র্যাক
/
Java
Java
/
সিলেবাস
/
বিট ম্যানিপুলেশন
বি

বিট ম্যানিপুলেশন মধ্যে Java

3টি অনুশীলনী

বিট ম্যানিপুলেশন সম্পর্কে

Java-তে একটি ইন্টিগ্রাল টাইপ-এর (byte, short, int, long বা char) বিট নিয়ে কাজ করার অপারেটর আছে।

শিফট অপারেটর

বিট বাম দিকে শিফট করতে << এবং ডান দিকে শিফট করতে >> ব্যবহার করুন।

// Shift two places to the left
0b0000_1011 << 2;
// # => 0b0010_1100

// Shift two places to the right
0b0000_1011 >> 2;
// # => 0b0000_0010

>>-কে সাইনড শিফট বা অ্যারিথমেটিক শিফট অপারেটরও বলা হয়, কারণ এটি যে বিটটি ঢোকায় তা তার সাইন বিটের মতোই। এটি সবচেয়ে বামের বিট, এবং মান ধনাত্মক হলে এটি 0, ঋণাত্মক হলে 1। << দিয়ে বাম দিকে শিফট করলে ডান দিকে সবসময় 0 ঢোকানো হয়।

// Shift 2 places to the right preserves the sign
// The binary value is two's complement of 0b0000_0110 (or 0x00000026), so the binary representation will be
// 1000_0000_0000_0000_0000_0000_0010_0110
int value = -0x7FFFFFDA;

// Shift two places to the right, preserving the sign bit
value >> 2;
// # => 1110_0000_0000_0000_0000_0000_0000_1001

ডান দিকে শিফট করার সময় 0 ঢোকাতে হলে বদলে >>> ব্যবহার করুন। শিফট করার সময় 0 ঢোকানোকে লজিক্যাল শিফট নামেও ডাকা হয়।

// Shift two places to the right, inserting 0s on the left
value >>> 2;
// # => 0010_0000_0000_0000_0000_0000_0000_1001

বিটওয়াইজ অপারেশন

বিটওয়াইজ AND

বিটওয়াইজ AND (&) অপারেটর দুটি মান নিয়ে প্রতিটি বিটের উপর AND করে। এটি প্রথম মানের প্রতিটি বিট দ্বিতীয় মানের একই অবস্থানের বিটের সাথে তুলনা করে। দুটিই 1 হলে ফলাফলের বিট 1 হয়। অন্যথায় ফলাফলের বিট 0 হয়।

0b0110_0101 & 0b0011_1100;
// # => 0b0010_0100

বিটওয়াইজ OR

বিটওয়াইজ OR (|) অপারেটর দুটি মান নিয়ে প্রতিটি বিটের উপর OR করে। এটি প্রথম মানের প্রতিটি বিট দ্বিতীয় মানের একই অবস্থানের বিটের সাথে তুলনা করে। যেকোনো একটি বিট 1 হলে ফলাফলের বিট 1 হয়। অন্যথায় এটি 0 হয়।

0b0110_0101 | 0b0011_1100;
// # => 0b0111_1101

বিটওয়াইজ XOR

বিটওয়াইজ XOR অপারেটর (^) দুটি মানের উপর বিটওয়াইজ XOR করে। বিটওয়াইজ AND ও বিটওয়াইজ OR অপারেটরের মতোই, এটি প্রথম মানের প্রতিটি বিট দ্বিতীয় মানের একই অবস্থানের বিটের সাথে মেলায়। এদের মধ্যে কেবল একটি 1 হলে ফলাফলের বিটটি 1 হয়। অন্যথায় এটি 0 হয়।

0b0110_0101 ^ 0b0011_1100;
// # => 0b0101_1001

বিটওয়াইজ NOT(~)

সবশেষে, বিটওয়াইজ NOT অপারেটর (~) প্রতিটি বিট উল্টে দেয়। আগের অপারেটরগুলোর মতো নয়, এটি একটি ইউনারি অপারেটর, যা কেবল একটি মানের উপর কাজ করে।

~0b0110_0101;
// # => 0b1001_1010
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে

বিট ম্যানিপুলেশন শিখুন