A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 依然AI 中级黑马   /  2012-12-28 16:21  /  1461 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 依然AI 于 2012-12-28 16:48 编辑

public int myRead()throws IOException
        {
                //通过in对象读取硬盘上数据,并存储buf中。
                if(count==0)
                {
                        count = in.read(buf);
                        if(count<0)
                                return -1;
                        pos = 0;
                        byte b = buf[pos];

                        count--;
                        pos++;
                        return b&255;
                }
                else if(count>0)
                {
                        byte b = buf[pos];

                        count--;
                        pos++;
                        return b&0xff;
                }
                return -1;
        }

问一下 老师为了区别-1和2进制-1   &操作了255 返回int  避免了-1这个问题
但是-1的时候这么是解决了  正常的数据也被&255操作了 这样正常数据不就也变化了吗  不是很明白这里是怎么操作过去的  求解答





评分

参与人数 1技术分 +1 收起 理由
刘芮铭 + 1

查看全部评分

3 个回复

倒序浏览
又看了一遍视频 明白了 是 b&255的问题   我对&操作当时没看明白   &255就是和
1111-1111-1111-1111-1111-1111-1111-1111
0000-0000-0000-0000-0000-0000-1111-1111
操作  正常的数据 和
0000-0000-0000-0000-0000-0000-1111-1111
&操作 不会变化的   因为之后后八位是读出来的 前面是自动不全的  只有-1会出现 不会出现其他负值 不全为0的数据和
&255操作 不会变化
例如
0000-0000-0000-0000-0000-0000-1100-1001
0000-0000-0000-0000-0000-0000-1111-1111=
0000-0000-0000-0000-0000-0000-1100-1001

总结&255操作就是把自动补全1改为0的操作   其实当时老师讲过的  我没有理解到位。
回复 使用道具 举报
自己提问自己回答,孺子可教也
回复 使用道具 举报
好孩子,有想法!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马