一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

搜索
查看: 5112|回复: 20

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

[复制链接]
发表于 2014-5-26 11:39 | 显示全部楼层 |阅读模式
u8 gfReverse_Bits(u8 Data)$ h, E% E$ U3 N9 F7 p3 X! [
{
3 B  }/ j# x( B) T2 D/ t& Z% [0 s        Data=(Data<<4)|(Data>>4);  ) H) {3 Z- t8 o: O, q$ w
        Data=((Data<<2)&0xcc)|((Data>>2)&0x33);  
/ A- `- h; ?" k$ u7 q        Data=((Data<<1)&0xaa)|((Data>>1)&0x55);
3 C4 L! w9 {7 z5 Y) o        return Data;
' M) v2 I6 n' w( ]3 m# A% M}* y8 @. o4 {- S* z

: Z3 l6 r3 N4 s0 V( H/ z/ y/ a/ \4 F; y. K" B5 v* ^& [" A6 H
如果大家看明白了发现这个十分的精巧可以为我所用,但之前大家是怎么做的呢(一个一个来求,是的我是这样做的)?
发表于 2014-5-26 11:53 | 显示全部楼层
虽然精辟,但是在实际开发中,非常不建议这样写,因为没办法快速的让别人读懂。
回复

使用道具 举报

发表于 2014-5-26 12:11 | 显示全部楼层
高地位反转?
$ y! H0 @: J8 G, M) H5 r他这样写根本就没效率,直接查表快得多。
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-5-26 12:24 | 显示全部楼层
jckimi 发表于 2014-5-26 11:53+ K0 `: e# v  u1 j$ Y7 x
虽然精辟,但是在实际开发中,非常不建议这样写,因为没办法快速的让别人读懂。

, O  T' n- ?% V5 P7 r' B是有点难我花了一个小时才知道它的原理,但从另外一个角度来看还是值的,知道多一点数据的转换还是值的。2 J4 ]- E$ X4 o( L/ E
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:25 | 显示全部楼层
xwj 发表于 2014-5-26 12:11% t+ {7 }. |( v9 m
高地位反转?' _- i4 N; J1 N( y. t
他这样写根本就没效率,直接查表快得多。
2 m  j8 `9 B( n2 A! a
是的高低位反转,那请问查找表如何查呢?能发一段同样的效果的程序来学习一下吗?% G: p, X5 N, Q4 W
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:28 | 显示全部楼层
reiyawea 发表于 2014-5-26 12:18
1 E/ W  E( X. |6 J% u这是基于分治思想的,在数据量大时很有优势,但这里才8位啊,优势不明显。且看C代码好像挺“精简”,但编译 ...

. s4 N* A. C" B/ L% ?! p在C语言里优化对汇编是有帮助的。反正我不管是写VERILOG还是C都不想绕圈子。: n8 i7 P- M; X) J( {0 O
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:33 | 显示全部楼层
其实说来这个程序好简单,当然不知道好像看天书。
7 A5 L" g0 b; a( T3 B2 l! R4 I. j它是分三个部分来处理的
! K" C2 ?3 e6 K5 y9 q第一首先将高低4位对调
9 B9 h6 b% b% ~- l/ T第二将4位中的两位对调! x& Z( h: R4 ?9 S, c% c
第三将2位对调, t0 j1 ^0 p7 j. v1 O! T: |
所以会有 <<4 , >>4 , <<2, >>2 ,<<1,>>1.
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-5-26 16:08 | 显示全部楼层
384065902 发表于 2014-5-26 15:39
$ \2 b4 g! w! A8 S5 C. U7 x0 I- ]非常好啊,钱些日子做了对掉,各种运算,取余 除 乘 用了个变。觉得这个再16位以上非常有意义
5 |& c, Q4 p6 I7 X* W- G
你只要看懂这个程序16位32位都会写出来了。6 B. a- f$ X0 L1 M& h1 t* T! m
回复

使用道具 举报

本版积分规则

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

GMT+8, 2025-8-20 12:06 , Processed in 0.033169 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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