& 0xFF 與 & 0xFF00 的作用


byte--->char代碼是這樣的:

c[i] = (char) (b[i] & 0xff) (b[i]為byte型,c[i]為char型)
覺得與一下0xff沒什么用。直接c[i] = (char)b[i]有何異?

如: ((WORD)((((WORD)(wData) >> 8) & 0xff) | (((WORD)(wData) << 8) & 0xff00)))

char c = (char)-1 & 0xFF;
char d = (char)-1;
System.out.println((int)c);
System.out.println((int)d);

這樣輸出是

255
65535


上面代碼就是為了避免錯誤

補充一下:
1)。位運算符只針對4byte的int型
2)。-2的byte類型 16進制表示為 FE(2取反加1)
3)。-2 & 0xFF運算: 實際-2帶符合bit-wise成int,即FE會變成FFFFFFFE(2取反加1), 接着
0xFFFFFFFE & 0x000000FF = 0x 000000FE; 如果不&,就是FFFFFFFE。

1) 位運算不限制為int, long也行的。
2)
3) 負數進行&操作時需要轉成補碼,-2 的補碼是0xFFFFFFFE

因為byte的取值范圍是 -128~127,而Char是0~65535

所以需要& 0xFF 使得byte原來的負值變成正的


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM