读书人

有图无实情求真相

发布时间: 2012-12-17 09:31:40 作者: rapoo

有图无真相,求真相!

想知道有几种算法! 今天看一同学的做法,受刺激了!
只要实现交换位的算法就可,其他省略也可! 谢谢!
[最优解释]
byte x = 21;
var res = (x & 128)
[其他解释]
((x&42)<<1)
[其他解释]
(x&1);

因为byte只有8位,所以这种交换可以直接把值定出来

x & 128 就是取第8位
(x&84)>>1 取2,4,6位,再按照你的规则右移1位
后面两个同理

最后做一下或运算即可
[其他解释]
本人菜鸟,希望有会的都能发表下意见! 沙发自己做了!顶下








[其他解释]
((x&84)>>1)
[其他解释]
上面几个值的由来

128=1<<8;
84=1<<(3-1)
[其他解释]
1<<(5-1)
[其他解释]
1<<(7-1)
42 = 1<<(2-1)

读书人网 >C#

热点推荐