原文:
If you are converting from a byte value b to a char and you don’t want sign
extension, you must use a bit mask to suppress it. This is a common idiom, so no
comment is necessary:
char c = (char) (b & 0xff);
没有get到 sign extension的含义!以及为什么这么做就没有sign extension
Pertama sekali, char ialah bait 16-bit dan bait 8-bit. Terdapat bentuk negatif char Jika anda melakukan anjakan langsung, bait negatif akan terus berkembang mengikut tanda pertama bit untuk menjadi 111111111xxxxxx Jika anda melakukan sedikit DAN, masalah ini tidak akan berlaku
Saya faham ia adalah bit simbol
Apabila menjalankan operasi bit, kecuali jenis panjang, jenis lain akan ditukar secara automatik kepada jenis int bermakna ini tidak menggunakan bit pertama untuk memadankan bit untuk ditukar kepada char tiada jenis unsigned dalam Java, dan julat char Ia adalah -2^16-2^16-1, char ialah dua bait, contohnya, bait b=-1, dan bit pertama digunakan sebagai bit tanda char c= (char)b, maka bit binari c (pelengkap) dinyatakan sebagai 1111 1111 1111 1111 Iaitu -1, dua bait mewakili -1 jika bit pertama tidak digunakan sebagai bit tanda, seperti char c=(char )(b&0xff), maka bit perduaan (pelengkap) c dinyatakan sebagai 0000 0000 1111 1111 Iaitu 255, bait dua aksara mewakili 255.