黑马程序员技术交流社区

标题: 二进制的疑问 [打印本页]

作者: 一步步    时间: 2013-11-13 16:34
标题: 二进制的疑问
                for(byte b:by)        {
                System.out.println(Integer.toBinaryString(b&255));
        }

这句话是把数字转化成二进制数,b&255这句话是怎么让二进制数只显示后八位的?

作者: 文涛    时间: 2013-11-13 16:51
首先255也是一个int型的常量,做&位与运算的时候,转换成二进制代码就是32位,其中前面的24位都是0,最后八位为一就是0000 0000 0000 0000 0000 0000 1111 1111,而&符号是位与,就是在二进制的每个位上做与运算,这样一来,b中的前面24位都变成了0,只有后8位得以保留,在system.out输出的时候,会省略前面的0位,于是只输出了后面的8位
作者: hubby    时间: 2013-11-13 16:52
这个就是把b和255进行与操作,即b的2进制与255相与 例如b的二进制是10101010
把32进制前面的0补齐
    00000000 00000000 00000000 10101010 b
  &00000000 00000000 00000000 11111111 255
与的规则是只有相同位置都为1才为1.
结果就是
  00000000 00000000 00000000 10101010 b

作者: 黄炳期    时间: 2013-11-13 18:12
帖子已分类




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