से http://www.coderanch.com/t/236675/java-programmer-SCJP/certification/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) {
//Third Bit is set to 1
}
सेट (1) एक विशेष बिट
int thirdBitTobeSet = 1 << 2 (...0000100)
int onWhichThisHasTobeSet = 2 (.......010)
onWhichThisHasTobeSet |= thirdBitTobeSet;
रीसेट (0) एक विशेष बिट
int thirdBitTobeReSet = ~(1 << 2) ; //(...1111011)
int onWhichThisHasTobeReSet = 6 ;//(.....000110)
onWhichThisHasTobeReSet &= thirdBitTobeReSet;
XOR
बस ध्यान दें कि यदि आप दो बार XOR ऑपरेशन करते हैं, तो समान मूल्य होगा।
byte toBeEncrypted = 0010 0110
byte salt = 0100 1011
byte encryptedVal = toBeEncrypted ^ salt == 0110 1101
byte decryptedVal = encryptedVal ^ salt == 0010 0110 == toBeEncrypted :)
XOR के साथ एक और तर्क है
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;