黑马程序员技术交流社区

标题: &的问题,求助 [打印本页]

作者: Maple    时间: 2014-2-25 18:28
标题: &的问题,求助
  1. int a = 1234567;
  2. int b = 0x06;
  3. int result = a&b;
复制代码

这道题要怎样解答
作者: 我要的幸福呢    时间: 2014-2-25 18:42
首先要知道在二进制中,1&1=1,1&0=0,0&0=0,也就是说两者同时为1的时候,&运算的结果才为1。
1234567的二进制为100101101011010000111,0x06的二进制为110,对应各位分别进行&运算,得到的就是结果
100101101011010000111
000000000000000000110
------------------------------
000000000000000000110


作者: 自由自在2014    时间: 2014-2-25 18:42
位与:第一个操作数的的第n位于第二个操作数的第n位如果都是1,那么结果的第n为也为1,否则为0    答案为 6
作者: 安辉林    时间: 2014-2-25 23:15
按位与运算,数白了就是两边都转换成二进制,然后按位进行与运算,结果的话,自己可以去算算了
作者: chenfc8578    时间: 2014-2-26 00:52
先使用Integer中的方法将十进制的a转换为二进制:Integer.toBinaryString(a)
再将十六进制b先转为十进制:Integer.valueOf("06",16);再将获得的十进制按照Integer.toBinaryString()方法转为二进制。
最后按位& 两位同时为“1”,结果才为“1”,否则为0
作者: 北冥有鱼    时间: 2014-2-26 02:42
chenfc8578 发表于 2014-2-26 00:52
先使用Integer中的方法将十进制的a转换为二进制:Integer.toBinaryString(a)
再将十六进制b先转为十进制:I ...

我怎么看不懂这个b,能详细说说吗
作者: chenfc8578    时间: 2014-2-26 08:32
北冥有鱼 发表于 2014-2-26 02:42
我怎么看不懂这个b,能详细说说吗

这些都是Integer类的方法,可以查一下Api文档
作者: qqwwdr    时间: 2014-2-26 09:17
本帖最后由 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   了

作者: 北冥有鱼    时间: 2014-2-26 14:33
qqwwdr 发表于 2014-2-26 09:17
十六进制数的表示方式为0x开头。
示例:0xAF=175

谢谢,一直都不知道十六进制数开头0x的说




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