黑马程序员技术交流社区

标题: 十六进制转换位运算的一个疑惑点? [打印本页]

作者: 悟佛修道    时间: 2013-5-17 00:37
标题: 十六进制转换位运算的一个疑惑点?
本帖最后由 悟佛修道 于 2013-5-17 09:20 编辑



这里一直没想明白,求解,谢谢!

十六进制位运算疑惑点.png (242.31 KB, 下载次数: 0)

十六进制位运算疑惑点.png

作者: 神之梦    时间: 2013-5-17 00:37
本帖最后由 神之梦 于 2013-5-17 00:52 编辑

俺的画图功底有限{:soso_e127:}



作者: 悟佛修道    时间: 2013-5-17 00:44
{:soso_e103:}以前都不知道逛论坛,遇到的问题都保存下来了。{:soso_e103:}
作者: 悟佛修道    时间: 2013-5-17 00:47
恩,这个是毕老师画的图,我怕表达不准确,所以直接在图上标注提问了,看着凌乱,望谅解。
作者: 337091921    时间: 2013-5-17 00:59
这个图就不给你解释了,给你解释一下转换的思路。
为什么&15呢,4个2进制为一个16进制,因为15的二进制是1111,正好是4位,&上1111就可以求出这个数的后四位的16进制了,竟然这四位已经求玩,所以就要后移啊,再求下个四位的二进制,直到全是0为止。所以求十六进制就是四位四位的转换,当有超过十的时候,还要-10+'a',在强转为char型。
作者: slatop@qq.com    时间: 2013-5-17 02:02
0000 1111和1111 0000这两个二进制数是不一样的。
如果你非要用高八位去与运算也不是不行啊。不过就不是&15了而是&240,然后把与后的结果再向右移四位。这样和先右移四位再与上15的结果是一样的。

1111 0000 & 240  然后结果>>>4  得到的结果和 1111 0000 先>>>4后的结果再&15是一样一样的。你仔细算一下我这两个运算式,就能明白自己的不解之处了
作者: 悟佛修道    时间: 2013-5-17 09:07
神之梦 发表于 2013-5-17 00:37
俺的画图功底有限

啊!你的意思是,我们在直接四位四位的画 然后按照1 2 4 8换算十六进制的时候,实际上都是往右移了四位,然后每次其实都是取的低四位,所以就是1 2 4 8?晕,:L我似乎明白了,我说怎么老是想不通,太感谢了,谢谢你!{:3_57:}

也谢谢各位的回答。:)
作者: 神之梦    时间: 2013-5-17 10:30
悟佛修道 发表于 2013-5-17 09:07
啊!你的意思是,我们在直接四位四位的画 然后按照1 2 4 8换算十六进制的时候,实际上都是往右移了四位, ...

每次&15就是在取低四位,取完一个低四位后,右移四位,就把右移前所谓的高四位变成了低四位。楼主只要明白了&15就是在取一个数的低四位就很好理解了。
发现我昨晚画得图说的也不是很清楚,没办法那时候真想睡了,但看到一个我似乎可以解决的问题,就试下看能不能解释清楚,希望那图楼主知道怎么看...
作者: 悟佛修道    时间: 2013-5-18 16:33
神之梦 发表于 2013-5-17 10:30
每次&15就是在取低四位,取完一个低四位后,右移四位,就把右移前所谓的高四位变成了低四位。楼主只要明 ...

我看明白了的,谢谢你。




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