黑马程序员技术交流社区

标题: 位操作来获取一个int数的十六进制、八进制、二进制 [打印本页]

作者: 晓月残魂    时间: 2015-6-14 21:16
标题: 位操作来获取一个int数的十六进制、八进制、二进制
本帖最后由 晓月残魂 于 2015-6-14 21:23 编辑

例如:60=0000-0000 0000-0000 0000-0000 0011-1100

          0000-0000 0000-0000 0000-0000 0011-1100
---------------------------------------------------------
编号   1        2       3        4       5       6        7        8

4位分为一组,则每组对应的十进制是多少?

第8组:(60>>>0)&((2<<4)-1)  即60&7
   0000-0000 0000-0000 0000-0000 0011-1100
   0000-0000 0000-0000 0000-0000 0000-1111
------------------------------------------------------
   0000-0000 0000-0000 0000-0000 0000-1100  

第7组:(60>>>4)&15
             0000 0000 0000-0000 0000-0000 0011-1100
   0000-0000 0000-0000 0000-0000 0000-1111
------------------------------------------------------------
   0000-0000 0000-0000 0000-0000 0011-0000

第6组:(60>>>8)&15
                      0000-0000 0000-0000 0000-0000 0011-1100
   0000-0000 0000-0000 0000-0000 0000-1111
--------------------------------------------------------------------
   0000-0000 0000-0000 0000-0000 0011-0000

其他一样。


扩展:这种方法可以把十进制转为十六进制(右移4位)、八进制(3位)、

二进制(右移1位)
>>>无符号右移
作者: 晓月残魂    时间: 2015-6-14 21:21
更正一下:
第七组 与 的结果是:0000-0000 0000-0000 0000-0000 0000-0011
第六组 与 的结果是:0000-0000 0000-0000 0000-0000 0000-0000




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