Http://www.coderanch.com/t/236675/java-programmer-SCJP/cerificationsation/xff থেকে
হেক্সাস আক্ষরিক 0xFF একটি সমান আন্ত (255)। জাভা 32 বিট হিসাবে int উপস্থাপন করে। এটি বাইনারি এ দেখতে দেখতে:
00000000 00000000 00000000 11111111
আপনি যখন কোনও সংখ্যায় কিছুটা বুদ্ধিমান এবং এই মানটি (255) দিয়ে করেন তবে এটি সংখ্যার সর্বনিম্ন 8 বিট ব্যতীত (জেরোগুলি তৈরি করতে) মাস্কিং করতে চলেছে।
... 01100100 00000101 & ...00000000 11111111 = 00000000 00000101
এবং% ভালো কিছু কিন্তু নয় সত্যিই ।
এবং কেন 0xff? এটিতে (2 পাওয়ার) - 1)। সমস্ত (2 পাওয়ার) - 1) (যেমন 7, 255 ...)% অপারেটরের মতো কিছু আচরণ করবে।
তারপরে
বাইনারি, 0 হয়, সমস্ত শূন্য এবং 255 এর মত দেখাচ্ছে:
00000000 00000000 00000000 11111111
এবং -1 এর মত দেখাচ্ছে
11111111 11111111 11111111 11111111
আপনি যখন 0xFF এর কিছুটা দিকে এবং 0 থেকে 255 পর্যন্ত কোনও মান করেন, ফলাফলটি মানটির মতো হুবহু। 255 এরও বেশি মান যদি এখনও থাকে তবে ফলাফল 0-255 এর মধ্যে আসবে।
তবে, আপনি যদি:
-1 & 0xFF
তুমি পাও
00000000 00000000 00000000 11111111
, যা -1 এর মূল মানের সমান হয় না ( 11111111
দশমিক 255 হয়)।
আরও কয়েকটি বিট কারসাজি: (প্রশ্নের সাথে সম্পর্কিত নয়)
X >> 1 = X/2
X << 1 = 2X
কোনও নির্দিষ্ট বিট (1) সেট করা আছে কিনা তা পরীক্ষা করুন (0) তারপরে না
int thirdBitTobeChecked = 1 << 2 (...0000100)
int onWhichThisHasTobeTested = 5 (.......101)
int isBitSet = onWhichThisHasTobeTested & thirdBitTobeChecked;
if(isBitSet > 0) {
}
(1) একটি নির্দিষ্ট বিট সেট করুন
int thirdBitTobeSet = 1 << 2 (...0000100)
int onWhichThisHasTobeSet = 2 (.......010)
onWhichThisHasTobeSet |= thirdBitTobeSet;
একটি নির্দিষ্ট বিট পুনরায় সেট (0)
int thirdBitTobeReSet = ~(1 << 2) ;
int onWhichThisHasTobeReSet = 6 ;
onWhichThisHasTobeReSet &= thirdBitTobeReSet;
এক্সওআর
কেবলমাত্র নোট করুন যে আপনি যদি দুটিবার এক্সওআর অপারেশন করেন তবে একই মানটির ফলাফল হবে।
byte toBeEncrypted = 0010 0110
byte salt = 0100 1011
byte encryptedVal = toBeEncrypted ^ salt == 0110 1101
byte decryptedVal = encryptedVal ^ salt == 0010 0110 == toBeEncrypted :)
এক্সওআর নিয়ে আরও একটি যুক্তি হ'ল
if A (XOR) B == C (salt)
then C (XOR) B == A
C (XOR) A == B
উপরেরটি নীচের মতো অস্থায়ীভাবে দুটি পরিবর্তনশীল অদলবদল করতে দরকারী
a = a ^ b; b = a ^ b; a = a ^ b;
বা
a ^= b ^= a ^= b;