谁位运算非常的熟悉啊?进来帮我看看这个。

yuhowe 2007-11-02 02:16:03
哪位能给我详细的说说下面的方法会把传入的 value 过滤成什么效果 以及为什么会有这个效果?
小弟位运算太差了,希望能请位指点指点

public int filter(int value) {
return ((value & 0xff00ff00) | ((value & 0xff0000) >> 16) | ((value & 0xff) << 16));
}
...全文
149 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongyali2005 2007-11-11
  • 打赏
  • 举报
回复
你把所有的数据,转换成二进制的.再来运算.就好理解了.
yuhowe 2007-11-10
  • 打赏
  • 举报
回复
哪位大哥能说一说嘛???
yuhowe 2007-11-04
  • 打赏
  • 举报
回复
还有哪位大哥能给我说一说?
yuhowe 2007-11-03
  • 打赏
  • 举报
回复
没有人,能再说一说吗?
yuhowe 2007-11-02
  • 打赏
  • 举报
回复
我的意思是如果传入的value 是十进制的int 把value的二进制的 第一个8位 和 第三个8位对换 那么在十进制上会表现出来什么呢
也就是 这个方法输入 和 输出的 十进制 会有什么规律
alphax 2007-11-02
  • 打赏
  • 举报
回复
你为什么会想到10进制上会有什么规律上的改变呢
yuhowe 2007-11-02
  • 打赏
  • 举报
回复
谢谢 z_lping
那这么说这个方法就是把value的二进制的 第一个8位 和 第三个8位 对换一下了
如果输入的是十进制 那么等于它对这个十进制做了什么有规律的改变呢?
z_lping 2007-11-02
  • 打赏
  • 举报
回复
In java, int type is represented using 32 bits, i.e. 4 bytes. Let's call these 4 bytes A, B, C, D.

value = ABCD

value & 0xff00ff00 = A0C0
value & 0x00ff0000 = 0B00 >> 16 = 000B
value & 0x000000ff = 000D << 16 = 0D00

then, A0C0 | 000B | 0D00 = ADCB.

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧