参考表
251对应的进制转换:
进制 | 各个进制对应数 |
---|---|
十进制 | 251 |
二进制 | 11111011 |
十六进制 | fb |
-5对应的进制转换:
进制 | 各个进制对应数 |
---|---|
十进制 | -5 |
二进制 | 11111111111111111111111111111011 |
十六进制 | ff ff ff fb |
思考:首先int型为整型,4个字节,每个字节为8位二进制位。所以251的完整写法为00000000000000000000000011111011(一共32位),只不过高位零去掉了。-5对应的也是11111111111111111111111111111011(认真数了,也是32位)。-2为11111111111111111111111111111110,负数和正数的对应关系不像十进制那样。
当我们定义这个方法时,
DataOutputStream out=new DataOutputStream(new
BufferedOutputStream(new FileOutputStream(file)));
执行:
out.writeInt(-5); out.close();
则被写入的数字为:ff ff ff fb
但是如果:
out.writeByte(-5); out.close();
则被写入的为:fb(低八位,一个字节)
重点:
DataOutputStream out=new DataOutputStream(new
BufferedOutputStream(new FileOutputStream(file)));
out.writeInt(-10); out.close();
DataInputStream in=new DataInputStream(new
BufferedInputStream(new FileInputStream(file)));
byte b=in.readByte();
System.out.println(b);
不管写入的是负几,只要高位是ff,输出的总是-1。因为-1的十六进制为ffffffff,其他负数的高位也是ff,我们读取一个byte,读到ff,但是system out 时默认是十进制输出的,高位会补f(重点!)