একটি Number এর বাইনারি Representation এর i'তম বিটটি 0 না 1 ?
N & ( 1 << i ) এই Operation এর মাধ্যমেই আমরা আমাদের Answer পেয়ে যাবো ।
এখন প্রশ্ন হল , এই Operation টি কেন কাজ করছে ?
ভালো করে খেয়াল করলেই আমরা এর উত্তর পেয়ে যাবো । আমরা জানি যে , বাইনারি Representation এ ডান থেকে বামে প্রতি বিট ধরে যাওয়া মানেই হল প্রতি ঘরে 2 এর Power 1 করে বাড়া ।
এখন ধরা যাক , N এর মান 10 ( {1010}2 ) । এর 2nd বিটটি আমরা বের করতে চাই ।
এক্ষেত্রে Operation টি হবে N & ( 1 << 2 ) । ( 1 << 2 ) মানে 1 কে 2 ঘর বামে shift করছি । তাহলে ( 1 << 2 ) এর মান হবে {100}2 অর্থাৎ 4 ।
এইধরনের আরো দুটি Operation রয়েছে ঃ
কোড ইমপ্লিমেন্টেশন ঃ
N & ( 1 << i ) এই Operation এর মাধ্যমেই আমরা আমাদের Answer পেয়ে যাবো ।
এখন প্রশ্ন হল , এই Operation টি কেন কাজ করছে ?
ভালো করে খেয়াল করলেই আমরা এর উত্তর পেয়ে যাবো । আমরা জানি যে , বাইনারি Representation এ ডান থেকে বামে প্রতি বিট ধরে যাওয়া মানেই হল প্রতি ঘরে 2 এর Power 1 করে বাড়া ।
এখন ধরা যাক , N এর মান 10 ( {1010}2 ) । এর 2nd বিটটি আমরা বের করতে চাই ।
এক্ষেত্রে Operation টি হবে N & ( 1 << 2 ) । ( 1 << 2 ) মানে 1 কে 2 ঘর বামে shift করছি । তাহলে ( 1 << 2 ) এর মান হবে {100}2 অর্থাৎ 4 ।
- তারপর N এর সাথে একে & করলে ঃ {1010}2 & {0100}2 = 0 ।
এইধরনের আরো দুটি Operation রয়েছে ঃ
- একটি Number এর বাইনারি Representation এর i'তম বিটটি On করা অর্থাৎ 1 করা । ( N |= ( 1<< i )) ।
- একটি Number এর বাইনারি Representation এর i'তম বিটটি Off করা অর্থাৎ 0 করা । ( N &= ~(1<<i )) ।
কোড ইমপ্লিমেন্টেশন ঃ
0 comments: (+add yours?)
Post a Comment