黑马程序员技术交流社区

标题: 标题改了 请版主删除 [打印本页]

作者: 李栋    时间: 2011-12-20 16:47
标题: 标题改了 请版主删除
本帖最后由 李栋 于 2012-12-25 20:54 编辑

请删除         
作者: 刘基军    时间: 2011-12-20 17:03
好久没见了,呵呵
temp&15:15不就是1111(二进制)吗,与“1”进行“&”得到就是其本身,即取出temp的低四位值(十六进制:四位二进制表示一位):

temp: 60(int四个字节)
二进制表示:
0000-0000 0000-0000 0000-0000 0011-1100
转换成十六进制:
0-0 0-0 0-0 3-c,即为0x3c

作者: 宋双    时间: 2011-12-20 17:03
temp&15是为了提取temp这个数2进制的后4位
15的二进制是1111,前面空位补0即 0000-0000 0000-0000 0000-0000 0000-1111
假设 temp此时是
  0000-0000 0000-0000 0010-0011 0100-0111
&0000-0000 0000-0000 0000-0000 0000-1111
---------------------------------------------------------------------
  0000-0000 0000-0000 0000-0000 0000-0111
这样就得到了后四位,转换16进制需要这四位,剩下的你应该懂得。
作者: 为梦而战    时间: 2011-12-20 17:06
本帖最后由 为梦而战 于 2011-12-20 17:14 编辑

如果你的电脑的32位的话那15的二进制是:0000-0000-0000-0000-0000-0000-0000-1111,&的特点是true +ture=true,true+false=false,false+false=false,
false+false=false;明白了&的特点后,你会发现其它整数&了15后,整数的最后四位的有效位就被保留了下来。然后按照每四位二进制转成一位十六进制,将&15之后保留下来的这四位转成一位十六进制数了。要是你想问为什么是&15呢?那是因为一位十六进制位对应四位二进制,正好15的最后四位都是1,可以参加&运算而获取到那个要&15的整数的最后四位。
比如:0000-0000-0000-0000-0000-0000-0101-1011     (91的二进制数)
       & 0000-0000-0000-0000-0000-0000-0000-1111       (15的二进制数)
----------------------------------------------------------------------------
          0000-0000-0000-0000-0000-0000-0000-1011
作者: 余松霖    时间: 2011-12-20 17:10
与上15就是为了取最低四位的值   15换成二进制就是1111
比如:
   0000-0000 0000-0000 0000-0000 0000-0101
& 0000-0000 0000-0000 0000-0000 0000-1111

就就可以取出最低四位的值.就是0101
作者: 郭繁森    时间: 2011-12-20 20:11
15的二进制位的后四位是1111(前面都是0),&就是 真真为真,假假为真,真假为假(两个(真真、假假)一样&后还是之前的,不一样就是假)。把0当成假1当成真,&15(即1111)就是能取其最低四位,画出来,揣摩下就能懂的
作者: 李栋    时间: 2011-12-20 20:41
monghuan 发表于 2011-12-20 17:03
好久没见了,呵呵
temp&15:15不就是1111(二进制)吗,与“1”进行“&”得到就是其本身,即取出temp的低四 ...

一看您的回答就突然明白了,呵呵,谢谢monghuan同学啦,我前一阶段事情多了一些,现在学习还在慢慢继续着,基础要打牢了,呵呵:handshake
作者: 李栋    时间: 2011-12-20 20:42
宋双 发表于 2011-12-20 17:03
temp&15是为了提取temp这个数2进制的后4位
15的二进制是1111,前面空位补0即 0000-0000 0000-0000 0000-000 ...

谢谢宋双同学的解答啊,我明白了,谢谢
作者: 李栋    时间: 2011-12-20 20:43
为梦而战 发表于 2011-12-20 17:06
如果你的电脑的32位的话那15的二进制是:0000-0000-0000-0000-0000-0000-0000-1111,&的特点是true +ture=t ...

谢谢为梦而战同学辛苦详细的解答啊,我明白了,谢谢:handshake
作者: 李栋    时间: 2011-12-20 20:44
余松霖 发表于 2011-12-20 17:10
与上15就是为了取最低四位的值   15换成二进制就是1111
比如:
   0000-0000 0000-0000 0000-0000 0000-0101 ...

是,谢谢余松霖同学的解答,我明白了,呵呵
作者: 李栋    时间: 2011-12-20 20:45
guofansen 发表于 2011-12-20 20:11
15的二进制位的后四位是1111(前面都是0),&就是 真真为真,假假为真,真假为假(两个(真真、假假)一样& ...

是,谢谢guofansen同学的解答,我明白了,谢谢
作者: 郭繁森    时间: 2011-12-20 20:46
李栋 发表于 2011-12-20 20:45
是,谢谢guofansen同学的解答,我明白了,谢谢

呵呵,共同进步吧
作者: 李栋    时间: 2011-12-20 20:57
guofansen 发表于 2011-12-20 20:46
呵呵,共同进步吧

是:handshake




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