一乐电子

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

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 5753|回复: 20

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

[复制链接]
发表于 2014-5-26 11:39 | 显示全部楼层 |阅读模式
u8 gfReverse_Bits(u8 Data)* q4 v/ x" q$ @3 t. C
{+ Z- @$ {4 s; l
        Data=(Data<<4)|(Data>>4);  5 [5 h  r# t. P6 H; p% p: ]& {" b
        Data=((Data<<2)&0xcc)|((Data>>2)&0x33);  
. X. E. ]2 J7 H7 j3 K# _        Data=((Data<<1)&0xaa)|((Data>>1)&0x55);
: Y* g4 D5 y& I/ q4 {. ]        return Data;
' L' P6 I  R  E+ ~0 ]}
- Z8 D4 J  ]/ h* s8 h: {' @% p6 j
5 S/ T! q! K" A$ G. x8 A
如果大家看明白了发现这个十分的精巧可以为我所用,但之前大家是怎么做的呢(一个一个来求,是的我是这样做的)?
发表于 2014-5-26 11:53 | 显示全部楼层
虽然精辟,但是在实际开发中,非常不建议这样写,因为没办法快速的让别人读懂。
回复

使用道具 举报

发表于 2014-5-26 12:11 | 显示全部楼层
高地位反转?8 T8 T! t1 ]* T) \4 C. \  w# C, [
他这样写根本就没效率,直接查表快得多。
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-5-26 12:24 | 显示全部楼层
jckimi 发表于 2014-5-26 11:53
( o2 [* U! X8 }4 ~/ _5 [8 x虽然精辟,但是在实际开发中,非常不建议这样写,因为没办法快速的让别人读懂。
% y# }9 ]7 |  W3 g0 g& _, D
是有点难我花了一个小时才知道它的原理,但从另外一个角度来看还是值的,知道多一点数据的转换还是值的。. R$ t: f2 t8 t/ V5 j$ [
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:25 | 显示全部楼层
xwj 发表于 2014-5-26 12:11
" C% e. D9 o8 @4 J* y9 G高地位反转?; K7 `: p# L, [( V! ~* n8 B( h
他这样写根本就没效率,直接查表快得多。

/ C; W1 {. |1 M是的高低位反转,那请问查找表如何查呢?能发一段同样的效果的程序来学习一下吗?
, Z' |, ~$ g- b# G: \' G6 t
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:28 | 显示全部楼层
reiyawea 发表于 2014-5-26 12:18
! L  L. z! L+ o. {, q$ M这是基于分治思想的,在数据量大时很有优势,但这里才8位啊,优势不明显。且看C代码好像挺“精简”,但编译 ...
( Q, r6 b2 F' z6 }/ H: E
在C语言里优化对汇编是有帮助的。反正我不管是写VERILOG还是C都不想绕圈子。
; j; Y) i/ s, @& V" Q, O
回复

使用道具 举报

 楼主| 发表于 2014-5-26 12:33 | 显示全部楼层
其实说来这个程序好简单,当然不知道好像看天书。
7 p2 Y" s$ E2 I它是分三个部分来处理的
4 |- a6 c- F! z( K4 H+ Q第一首先将高低4位对调( S8 p, A" ~9 e8 e& J. ?
第二将4位中的两位对调% ]& T( @7 s9 g. X
第三将2位对调( n# F& z( A) X1 n
所以会有 <<4 , >>4 , <<2, >>2 ,<<1,>>1.
回复

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2014-5-26 16:08 | 显示全部楼层
384065902 发表于 2014-5-26 15:399 t( J1 @. Q  ^
非常好啊,钱些日子做了对掉,各种运算,取余 除 乘 用了个变。觉得这个再16位以上非常有意义
$ S7 u! j7 z& g
你只要看懂这个程序16位32位都会写出来了。
! S/ y5 [! E4 Z  k! R4 ^8 ]
回复

使用道具 举报

本版积分规则

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

GMT+8, 2026-2-25 16:44 , Processed in 0.035897 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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