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