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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Maple 中级黑马   /  2014-2-25 18:28  /  1139 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. int a = 1234567;
  2. int b = 0x06;
  3. int result = a&b;
复制代码

这道题要怎样解答

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

8 个回复

倒序浏览
首先要知道在二进制中,1&1=1,1&0=0,0&0=0,也就是说两者同时为1的时候,&运算的结果才为1。
1234567的二进制为100101101011010000111,0x06的二进制为110,对应各位分别进行&运算,得到的就是结果
100101101011010000111
000000000000000000110
------------------------------
000000000000000000110

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0    答案为 6
回复 使用道具 举报
按位与运算,数白了就是两边都转换成二进制,然后按位进行与运算,结果的话,自己可以去算算了
回复 使用道具 举报
先使用Integer中的方法将十进制的a转换为二进制:Integer.toBinaryString(a)
再将十六进制b先转为十进制:Integer.valueOf("06",16);再将获得的十进制按照Integer.toBinaryString()方法转为二进制。
最后按位& 两位同时为“1”,结果才为“1”,否则为0

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
chenfc8578 发表于 2014-2-26 00:52
先使用Integer中的方法将十进制的a转换为二进制:Integer.toBinaryString(a)
再将十六进制b先转为十进制:I ...

我怎么看不懂这个b,能详细说说吗
回复 使用道具 举报
北冥有鱼 发表于 2014-2-26 02:42
我怎么看不懂这个b,能详细说说吗

这些都是Integer类的方法,可以查一下Api文档
回复 使用道具 举报
qqwwdr 中级黑马 2014-2-26 09:17:01
8#
本帖最后由 qqwwdr 于 2014-2-26 09:23 编辑
北冥有鱼 发表于 2014-2-26 02:42
我怎么看不懂这个b,能详细说说吗

十六进制数的表示方式为0x开头。
示例:0xAF=175




System.out.println(Integer.toBinaryString(a));
可以得到 :100101101011010000111
b的十进制就是6,转成2进制 ,低八位 是:00000111,高位的全部是0 ,就不用看了
按位与操作,  得到的 也就 只有 00000111, 也就是 6   了

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1

查看全部评分

回复 使用道具 举报
qqwwdr 发表于 2014-2-26 09:17
十六进制数的表示方式为0x开头。
示例:0xAF=175

谢谢,一直都不知道十六进制数开头0x的说
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马