搜索
bottom↓
回复: 84

送给大家一个程序

  [复制链接]

出0入0汤圆

发表于 2013-10-7 22:05:51 | 显示全部楼层 |阅读模式
我也是网上搜的。不想自己写,结果没想到还有这么牛的。

u8 gfReverse_Bits(u8 Data)
{
        Data=(Data<<4)|(Data>>4);  
        Data=((Data<<2)&0xcc)|((Data>>2)&0x33);  
        Data=((Data<<1)&0xaa)|((Data>>1)&0x55);
        return Data;
}

出0入93汤圆

发表于 2013-10-7 22:07:17 | 显示全部楼层
看起来不错,楼主在什么编译环境下测试过?

出0入0汤圆

发表于 2013-10-7 22:07:58 | 显示全部楼层
hacker's delight这本书里面的。

出0入85汤圆

发表于 2013-10-7 22:09:55 | 显示全部楼层
这个是干啥使的?把一个字节的高位和低位反过来?

出0入4汤圆

发表于 2013-10-7 22:16:30 | 显示全部楼层
很简洁的语言就完成了啊,谢谢

出0入0汤圆

发表于 2013-10-7 22:22:06 | 显示全部楼层
刚才用VC试了一下,是把一个二进制数倒过来写。

出30入0汤圆

发表于 2013-10-7 22:23:15 来自手机 | 显示全部楼层
不错'  学习下

出0入0汤圆

发表于 2013-10-7 22:26:43 | 显示全部楼层
实现这个反转,一般用什么办法?

出0入0汤圆

发表于 2013-10-7 22:27:01 | 显示全部楼层
只看懂第一行

出0入0汤圆

 楼主| 发表于 2013-10-7 22:29:39 | 显示全部楼层
效率还比较高,特地和union方式比较了下,这个更有优势。某些情况下,硬件可能和软件是反的,这时可能用到这程序。。

出0入0汤圆

发表于 2013-10-7 22:40:13 | 显示全部楼层
本帖最后由 histamine 于 2013-10-7 22:42 编辑

分治思想,推荐一本书hacker's delight,专门讲各种底层运算操作优化的

LZ贴的程序的算法,在这本书的7-1 Reversing Bits and Bytes这节里面

出0入0汤圆

发表于 2013-10-7 22:41:00 | 显示全部楼层
如果是哥,直接看表

出0入0汤圆

发表于 2013-10-7 22:56:36 | 显示全部楼层
收藏,好东西

出0入0汤圆

发表于 2013-10-7 22:59:50 | 显示全部楼层
有没32位的

出0入0汤圆

发表于 2013-10-7 23:07:05 来自手机 | 显示全部楼层
字节倒序?

出0入0汤圆

发表于 2013-10-7 23:08:45 | 显示全部楼层
明天去公司吧这段程序调试下,很简洁呀,多谢LZ

出0入0汤圆

发表于 2013-10-7 23:15:51 | 显示全部楼层
原文上传,英语好的可以通读下此书,很多非常有意思的算法。撸主程序在第七章。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

 楼主| 发表于 2013-10-7 23:21:30 | 显示全部楼层
这本书收藏了。。还是人多力量大。。

出0入0汤圆

发表于 2013-10-7 23:53:02 | 显示全部楼层
帅              

出0入0汤圆

发表于 2013-10-7 23:55:00 | 显示全部楼层
确实 好东西 上次遇见个板子  并行数据口接反了正好试试

出0入0汤圆

发表于 2013-10-8 00:25:38 | 显示全部楼层
收藏那书~~~~

出100入0汤圆

发表于 2013-10-8 00:41:17 来自手机 | 显示全部楼层
mark        

出0入0汤圆

发表于 2013-10-8 00:59:28 | 显示全部楼层
用硬件指令

出0入93汤圆

发表于 2013-10-8 01:28:23 | 显示全部楼层
schwarz 发表于 2013-10-7 23:15
原文上传,英语好的可以通读下此书,很多非常有意思的算法。撸主程序在第七章。
...

先谢,明天白天再下来看

出0入0汤圆

发表于 2013-10-8 03:58:29 | 显示全部楼层
penny2799 发表于 2013-10-7 22:59
有没32位的

Cortex-M3可以用RBIT指令,32位的。

出0入0汤圆

发表于 2013-10-8 07:47:32 | 显示全部楼层
嗯,得回去试,看看是什么效果,学习了

出0入0汤圆

发表于 2013-10-8 08:15:42 | 显示全部楼层
能把电压对调就更好了,玩笑。

出0入0汤圆

发表于 2013-10-8 08:28:05 | 显示全部楼层
很简洁啊,赞一个!

出0入0汤圆

发表于 2013-10-8 08:30:54 | 显示全部楼层
还没看懂,收藏先然后慢慢学习!

出0入0汤圆

发表于 2013-10-8 08:32:57 | 显示全部楼层
这里讲过:http://www.amobbs.com/thread-5454301-1-1.html

出0入0汤圆

发表于 2013-10-8 08:33:05 | 显示全部楼层
蝶形变换

出0入0汤圆

发表于 2013-10-8 08:35:59 | 显示全部楼层
这个好像很早以前看到过

http://www.amobbs.com/thread-1416186-1-1.html

出0入0汤圆

发表于 2013-10-8 08:36:49 | 显示全部楼层
有点意思。

出0入14汤圆

发表于 2013-10-8 08:40:12 | 显示全部楼层
简洁,以前是以一位位的取出来再拼出来

出0入0汤圆

发表于 2013-10-8 08:44:40 | 显示全部楼层
其实一个256字节的查表程序未必比这个大多少,只是源代码看起来复杂点,但是运行效率高得多。
或者简化下,用个16字节的查表加上三次位运算

出0入0汤圆

发表于 2013-10-8 08:52:43 | 显示全部楼层
thanks a lot

出0入85汤圆

发表于 2013-10-8 08:57:21 | 显示全部楼层
我用keil试了试貌似结果不对

出0入0汤圆

发表于 2013-10-8 09:01:54 | 显示全部楼层
__asm u32 RBIT(u32 value)
{
    rbit r0, r0
    bx lr
}
32的

出0入8汤圆

发表于 2013-10-8 09:14:26 | 显示全部楼层
下载下来看来下,需要好好看看

出0入0汤圆

发表于 2013-10-8 09:37:17 | 显示全部楼层
学习,学习

出0入0汤圆

发表于 2013-10-8 09:55:14 | 显示全部楼层
数据位反转         

出0入0汤圆

发表于 2013-10-8 09:57:42 | 显示全部楼层
收藏了,学习下

出0入0汤圆

发表于 2013-10-8 10:18:41 | 显示全部楼层
不错,这个方法

常常用到字节内部反序。想不到什么简单的方法。不是耗时就是耗空间

出0入0汤圆

发表于 2013-10-8 10:19:24 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2013-10-8 10:59:19 | 显示全部楼层
本帖最后由 histamine 于 2013-10-8 11:01 编辑
qllaoda1 发表于 2013-10-8 08:44
其实一个256字节的查表程序未必比这个大多少,只是源代码看起来复杂点,但是运行效率高得多。
或者简化下, ...


查表法效率未必有想象中那么高,内存的访问速度 不如 CPU寄存器的访问速度以及CPU计算速度 块

得看实际测试结果才能判断

出0入0汤圆

发表于 2013-10-8 11:29:46 | 显示全部楼层
很厉害的感觉

出0入0汤圆

发表于 2013-10-8 13:21:52 | 显示全部楼层
Cortex上,实用RBIT指令,再右移24位,就实现了8位的BIT反转了嘛。。。

出5入8汤圆

发表于 2013-10-8 14:41:02 | 显示全部楼层
学习学习

出0入0汤圆

 楼主| 发表于 2013-10-8 16:24:14 | 显示全部楼层
silence_sky 发表于 2013-10-8 09:01
__asm u32 RBIT(u32 value)
{
    rbit r0, r0

这个更简单

出0入0汤圆

发表于 2013-10-8 16:45:15 | 显示全部楼层
还是不要用这种很难理解的算法,毕竟程序最重要的是可靠,为了程序可靠其他如程序运行时间、程序花哨等等都可以退居二线。

出0入0汤圆

发表于 2013-10-8 16:51:25 | 显示全部楼层

收藏,好东西

出0入0汤圆

发表于 2013-10-8 17:27:11 | 显示全部楼层
学习一下
第一行是高4位与低4位交换,当作是两个4位数
第二行是两个4位数的高2位与低2位交换,当作4个2位数
第三行是4个2位数的高1位与低1位交换

出0入0汤圆

发表于 2013-10-8 18:45:41 | 显示全部楼层
学习。。。。。。。。。。

出0入0汤圆

发表于 2013-10-8 19:06:48 | 显示全部楼层
程序需要创意,创意来源于数学

出675入8汤圆

发表于 2013-10-8 19:17:30 来自手机 | 显示全部楼层
谢谢你收藏

出0入0汤圆

发表于 2013-10-8 20:13:10 | 显示全部楼层
感谢分享啊。

出0入0汤圆

发表于 2013-10-8 20:28:49 来自手机 | 显示全部楼层
前段时间刚用过32位的二进制逆序,和楼主这个思路差不多!

出0入0汤圆

发表于 2013-10-8 20:29:55 | 显示全部楼层
谢谢分享!!

出0入0汤圆

发表于 2013-10-8 20:36:39 | 显示全部楼层
好东西,谢楼主

出0入0汤圆

发表于 2013-10-8 20:40:32 | 显示全部楼层
histamine 发表于 2013-10-7 22:40
分治思想,推荐一本书hacker's delight,专门讲各种底层运算操作优化的

LZ贴的程序的算法,在这本书的7-1  ...

是否有电子书?

这个方法确实值得借剑

出0入0汤圆

发表于 2013-10-8 20:41:42 | 显示全部楼层
标志一下

出0入0汤圆

发表于 2013-10-8 21:12:20 | 显示全部楼层
标记一下。

出0入0汤圆

发表于 2013-10-8 21:20:06 | 显示全部楼层
SNOOKER 发表于 2013-10-8 20:40
是否有电子书?

这个方法确实值得借剑

你妹!我在17楼已经贴出来了。

出0入0汤圆

发表于 2013-10-8 21:32:21 来自手机 | 显示全部楼层
mark              

出0入0汤圆

发表于 2013-10-8 22:04:08 | 显示全部楼层
二进制数倒顺序?

出0入0汤圆

发表于 2013-10-10 00:07:20 | 显示全部楼层
下载17楼的书。

出0入0汤圆

发表于 2013-10-10 07:42:56 | 显示全部楼层
mark一下
多谢楼主

出0入0汤圆

发表于 2013-10-10 07:45:16 来自手机 | 显示全部楼层
学习学习了

出0入0汤圆

发表于 2013-10-10 08:32:38 | 显示全部楼层
好,支持下!

出0入0汤圆

发表于 2013-10-10 10:09:54 | 显示全部楼层
笑笑我笑了 发表于 2013-10-8 03:58
Cortex-M3可以用RBIT指令,32位的。

此楼正解,实际上看了CORTEX-M3权威指南,会发现很多东西都可以硬件支持。

出0入0汤圆

发表于 2013-10-10 11:28:43 | 显示全部楼层
确实是很简洁啊,太高效率了

出0入0汤圆

发表于 2013-10-10 14:39:28 | 显示全部楼层
好牛x啊,这函数

出0入0汤圆

发表于 2013-10-10 15:31:01 | 显示全部楼层
xuexi,

出0入0汤圆

发表于 2013-10-10 15:34:09 | 显示全部楼层
真没觉得有啥,

出0入0汤圆

发表于 2013-10-10 15:50:05 | 显示全部楼层

Nice Code

出0入0汤圆

发表于 2014-5-5 16:55:41 | 显示全部楼层
感谢17楼的好书

出0入0汤圆

发表于 2014-5-5 17:20:02 来自手机 | 显示全部楼层
学习,支持一下

出0入0汤圆

发表于 2014-5-5 17:27:38 | 显示全部楼层
顶一下   

出0入0汤圆

发表于 2014-5-5 18:01:56 | 显示全部楼层
蝴蝶变换

出0入0汤圆

发表于 2014-5-6 13:21:29 | 显示全部楼层
已试过。不错,很简洁。收下了

出0入0汤圆

发表于 2014-5-6 21:10:08 | 显示全部楼层
好算法,不错

出0入0汤圆

发表于 2014-5-6 21:20:13 | 显示全部楼层
有意思,学习了

出0入0汤圆

发表于 2014-5-7 07:21:32 来自手机 | 显示全部楼层
谢谢分享

出0入0汤圆

发表于 2014-5-7 20:49:10 | 显示全部楼层
研究一下,

出0入0汤圆

发表于 2014-5-7 23:22:02 | 显示全部楼层
英语差,压力大
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-2 06:56

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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