黑马程序员技术交流社区

标题: int字节问题 [打印本页]

作者: 刘江华    时间: 2011-10-6 16:06
标题: int字节问题
但是看张老师视频的时候,不是说 int 类型的占4个字节吗?但是为什么一个数:24 只有一个字节?
(看张老师视频是这样说的。RandomAccessFile.read()只读一个字节)
作者: 刘江华    时间: 2011-10-7 08:38
{:soso_e179:}谢谢,懂了。
作者: wsssx    时间: 2011-10-9 22:04
提示: 作者被禁止或删除 内容自动屏蔽
作者: 黄新灵    时间: 2011-10-9 23:09
int数据类型在计算机里面占用4个字节一个字节是8个二进制位,1 int = 4 * byte
当用输入流读取一些媒体、图像文件时,这些文件里的数据正是常说的二进制数据即:01串
那么用read()读取文件数据时是一个字节一个字节读取的,读一个字节相当于读了八个二进制位,因已到达流末尾而没有可用的字节,则返回值 -1.而文件中任何一个字节位置都有可能是11-11-11-11八个一,
11-11-11-11这是一个字节这个字节转换成十进制时表示-1,-1用一个int类型来接收是被提升了还是-1,但是用四个字节来表示即:
11111111-->11111111-11111111-11111111-11111111,
如果提升的时候前面不补1补0,这时候表示-1的一个字节被提升到int类型4个字节就不是-1了,即:255
11111111-->00000000-00000000-00000000-11111111
那么只要在前面补0,既可以保留原字节数据不变,又可以避免-1的出现。
接下来就是怎样才能按前面补0这种方法将独到的字节提升到int类型的呢?
11111111-11111111-11111111-11111111
&00000000-00000000-00000000-11111111
-----------------------------------------
00000000-00000000-00000000-11111111
即将读取的那个字节&上255即可。
因此RandomAccessFile.read()只读的是一个字节返回的是一个int。。。。
作者: 王家俊    时间: 2011-10-10 01:15
RandomAccess.read()从文件中读取一个数据字节。以整数形式返回此字节,范围在 0 到 255  .这里说的是一次读取一个数据字节,不是一次读取一个字节。
int型的数占据4个字节,24占据4个字节。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2