有图无真相,求真相!

cs张 2012-12-08 02:23:22

想知道有几种算法! 今天看一同学的做法,受刺激了!
只要实现交换位的算法就可,其他省略也可! 谢谢!
...全文
206 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 楼主 chungehenyy 的回复:
想知道有几种算法!
这是考谁呢?
风之影子 2012-12-08
  • 打赏
  • 举报
回复
不仔细看,还以为是RJ45网络做法的信息连接图示呢?
wanghui0380 2012-12-08
  • 打赏
  • 举报
回复
上面几个值的由来 128=1<<8; 84=1<<(3-1) | 1<<(5-1) | 1<<(7-1) 42 = 1<<(2-1) | 1<<(4-1) | 1<<(6-1) 1=1<<(1-1);
wanghui0380 2012-12-08
  • 打赏
  • 举报
回复
byte x = 21; var res = (x & 128)|((x&84)>>1)|((x&42)<<1)|(x&1); 因为byte只有8位,所以这种交换可以直接把值定出来 x & 128 就是取第8位 (x&84)>>1 取2,4,6位,再按照你的规则右移1位 后面两个同理 最后做一下或运算即可
cs张 2012-12-08
  • 打赏
  • 举报
回复
引用 3 楼 wanghui0380 的回复:
上面几个值的由来 128=1<<8; 84=1<<(3-1) | 1<<(5-1) | 1<<(7-1) 42 = 1<<(2-1) | 1<<(4-1) | 1<<(6-1) 1=1<<(1-1);
05:17:12 这个时间还没睡的?呵呵
cs张 2012-12-08
  • 打赏
  • 举报
回复
引用 2 楼 wanghui0380 的回复:
byte x = 21; var res = (x & 128)|((x&84)>>1)|((x&42)<<1)|(x&1); 因为byte只有8位,所以这种交换可以直接把值定出来 x & 128 就是取第8位 (x&84)>>1 取2,4,6位,再按照你的规则右移1位 后面两个同理 最后做一下或运算即可
我想知道下,你是怎么想到这种做法的,可能以前没见过这种做法,自己是想不出来的了,想知道你是怎么想出来的?还是在学的过程?曾经有相同的案例? 谢谢!
cs张 2012-12-08
  • 打赏
  • 举报
回复
引用 5 楼 sp1234 的回复:
引用 楼主 chungehenyy 的回复: 想知道有几种算法! 这是考谁呢?
自己是个菜鸟,所以想看看,表示不会做! 呵呵
cs张 2012-12-08
  • 打赏
  • 举报
回复
本人菜鸟,希望有会的都能发表下意见! 沙发自己做了!顶下

110,551

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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