一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5403|回复: 20

给大家看一段程序非常精辟

[复制链接]
发表于 2014-5-26 11:39 | 显示全部楼层 |阅读模式
u8 gfReverse_Bits(u8 Data)+ V, y* a. ~4 G
{5 G3 C- A. L. c
        Data=(Data<<4)|(Data>>4);  5 }, m/ I3 ^3 p" H
        Data=((Data<<2)&0xcc)|((Data>>2)&0x33);  
% k0 p. e+ j2 N' Q! W- Q5 g        Data=((Data<<1)&0xaa)|((Data>>1)&0x55);
. Z1 u( A6 P, z) @2 f        return Data;
+ ~+ y) `9 d3 t( I/ w# b/ L}
: d5 J# i+ z( s4 }; Z; {; H# H, i) E  B" |! |
4 k: n! e1 I$ ?, u, |
如果大家看明白了发现这个十分的精巧可以为我所用,但之前大家是怎么做的呢(一个一个来求,是的我是这样做的)?
发表于 2014-5-26 11:53 | 显示全部楼层
虽然精辟,但是在实际开发中,非常不建议这样写,因为没办法快速的让别人读懂。
回复

使用道具 举报

发表于 2014-5-26 12:11 | 显示全部楼层
高地位反转?2 T( l6 a; r' Q6 o
他这样写根本就没效率,直接查表快得多。
回复

使用道具 举报

发表于 2014-5-26 12:18 | 显示全部楼层
这是基于分治思想的,在数据量大时很有优势,但这里才8位啊,优势不明显。且看C代码好像挺“精简”,但编译后就不知道会有多冗长了。
+ G# ^4 g1 v0 a' Z' `2 _! o: o不过仍不失为一种编程学习过程的思维训练。
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:24 | 显示全部楼层
jckimi 发表于 2014-5-26 11:53
  b$ |; `! I$ S- a% i虽然精辟,但是在实际开发中,非常不建议这样写,因为没办法快速的让别人读懂。

- D0 [& j5 O# h) `* ^* U9 K是有点难我花了一个小时才知道它的原理,但从另外一个角度来看还是值的,知道多一点数据的转换还是值的。
: L# o9 v  a$ [; a0 `& _+ F
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:25 | 显示全部楼层
xwj 发表于 2014-5-26 12:11
( Q6 `8 i  \! }% Q" j高地位反转?  B# s5 [: C% S2 J8 o/ r) G# C8 _
他这样写根本就没效率,直接查表快得多。

( z! k" E9 I) d" H1 y! m5 Y是的高低位反转,那请问查找表如何查呢?能发一段同样的效果的程序来学习一下吗?' }* G4 l$ W% }9 C; a
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:28 | 显示全部楼层
reiyawea 发表于 2014-5-26 12:18' l( i& v) @4 Q0 S( u& f
这是基于分治思想的,在数据量大时很有优势,但这里才8位啊,优势不明显。且看C代码好像挺“精简”,但编译 ...
$ Q; r: I7 D. z
在C语言里优化对汇编是有帮助的。反正我不管是写VERILOG还是C都不想绕圈子。
4 U& L+ w0 m! y& H) e
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:33 | 显示全部楼层
其实说来这个程序好简单,当然不知道好像看天书。$ a4 F+ }" r( f" I' S
它是分三个部分来处理的' j# b' ?& J' o* Q
第一首先将高低4位对调3 D! X5 M* K# `$ i, }0 M3 z) G* Y
第二将4位中的两位对调% t. q9 j; q/ O( t, B* b3 G
第三将2位对调6 K* w+ v; M- g' z  Y* L: \! P
所以会有 <<4 , >>4 , <<2, >>2 ,<<1,>>1.
回复

使用道具 举报

发表于 2014-5-26 15:39 | 显示全部楼层
非常好啊,钱些日子做了对掉,各种运算,取余 除 乘 用了个变。觉得这个再16位以上非常有意义
回复

使用道具 举报

 楼主| 发表于 2014-5-26 16:08 | 显示全部楼层
384065902 发表于 2014-5-26 15:39
5 `! V& ^; ?$ o( d. y% ?/ A& F非常好啊,钱些日子做了对掉,各种运算,取余 除 乘 用了个变。觉得这个再16位以上非常有意义

% L! i. {  _1 K4 R7 c) V$ u. I你只要看懂这个程序16位32位都会写出来了。
3 J; z/ l# I' Z
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-27 21:55 , Processed in 0.033859 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表