日期:2014-05-17  浏览次数:20791 次

有图无真相,求真相!

想知道有几种算法!  今天看一同学的做法,受刺激了!   
    只要实现交换位的算法就可,其他省略也可!   谢谢!
------最佳解决方案--------------------
  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)