以下案例為什么要將i右移后從高位開(kāi)始寫(xiě)入呢?不是每次從低位開(kāi)始寫(xiě)入嗎?
以下案例為什么要將i右移后從高位開(kāi)始寫(xiě)入呢?不是每次從低位開(kāi)始寫(xiě)入嗎?
int i = 0x7fffffff;
//用write方法每次只能寫(xiě)一個(gè)字節(jié),如果要把i寫(xiě)進(jìn)去就得寫(xiě)4次
raf.write(i >>> 24);//高8位
raf.write(i >>> 16);
raf.write(i >>> 8);
raf.write(i);
2016-01-06
java默認(rèn)的編碼方式是unicode big endian,即大端存儲(chǔ)方式的unicode,具體數(shù)據(jù)的高位字節(jié)存放在低位地址上。關(guān)于大端模式和小端模式可以進(jìn)一步百度。
2016-01-07
raf.write('A');//只寫(xiě)了一個(gè)字節(jié)
System.out.println(raf.getFilePointer());
raf.write('B');
A的二進(jìn)制:00000000 01000001
B的二進(jìn)制:00000000 01000010
這里為什么沒(méi)有對(duì)A和B進(jìn)行右移操作呢?每次寫(xiě)只能寫(xiě)一個(gè)字節(jié),按照大端存儲(chǔ)方式那就全為0了吧?而且右移操作符應(yīng)該是2個(gè)>>吧,怎么他這里有3個(gè)呢?請(qǐng)教!