打印

一个数学问题请教

[复制链接]
3276|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lanyong|  楼主 | 2007-12-28 12:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

    8个8bit数据

    L[8]={L0,L1,L2,,, L7}

    如何最快

    得到H[8]={H0,H1,H2,,,H7}


    按位排列如下:
L0.7 L0.6 L0.5 L0.4 L0.3 L0.2 L0.1 L0.0
L1.7 L1.6 L1.5 L1.4 L1.3 L1.2 L1.1 L1.0
L2.7 L2.6 L2.5 L2.4 L2.3 L2.2 L2.1 L2.0

,    
,
,
L7.7 L7.6 L7.5 L7.4 L7.3 L7.2 L7.1 L7.0



    H与L关系如下:
    H0:L7.0,,,L2.0,L1.0 L0.0       //即按列取最低位组成H0.


    是否有硬件可以完成这样的运算?

    就有点象矩阵旋转.
沙发
兰天白云| | 2007-12-28 12:42 | 只看该作者

最快?不知到,HOTPOWER方法很多,进来说说

使用特权

评论回复
板凳
lanyong|  楼主 | 2007-12-28 13:01 | 只看该作者

可以先提方案吧.

一个笨办法,可能也是最有效果的办法就是

一个位一个位比较,置高或者清0啊.

不知道有没有其它办法.

使用特权

评论回复
地板
hotpower| | 2007-12-28 13:01 | 只看该作者

查表不用脑~~~

使用特权

评论回复
5
lanyong|  楼主 | 2007-12-28 13:02 | 只看该作者

查表???

我彻底晕,这里有多少种组合方式啊!
256^8=???

使用特权

评论回复
6
lanyong|  楼主 | 2007-12-28 13:35 | 只看该作者

法2

通过一个8bit口,把64位数据都移出来.接74hc595.

然后再搞64根线,8个一组,分别连接到8个8bit口中.

得到8个转换后的数据.

怎么样?

哈哈.

有点晕了。

使用特权

评论回复
7
yewuyi| | 2007-12-28 13:43 | 只看该作者

这样行不行?!

H0=L0;
H0|=(L1<<1)&0x02;
H0|=(L2<<2)&0x04;
H0|=(L3<<3)&0x08;
H0|=(L4<<4)&0x10;
H0|=(L5<<5)&0x20;
H0|=(L6<<6)&0x40;
H0|=(L7<<7)&0x80;

使用特权

评论回复
8
lanyong|  楼主 | 2007-12-28 14:03 | 只看该作者

可以的啊.

最好是同时给出汇编的代码.

题目要求最快啊.

哈哈.

估计上面的代码汇编出来一大串啊.

使用特权

评论回复
9
lanyong|  楼主 | 2007-12-28 14:27 | 只看该作者

线性代数谁还记得?

矩阵旋转.

好象可以通过什么运算,让矩阵旋转起来啊.

有数学高手吗?

使用特权

评论回复
10
兰天白云| | 2007-12-28 15:33 | 只看该作者

hotpower真不俺面子

居然出这么个瘦主意

使用特权

评论回复
11
lanyong|  楼主 | 2007-12-28 15:57 | 只看该作者

浩如烟海

 旋转矩阵是一个看似简单实际却异常复杂的问题,尽管有许许多多的人对它非常感兴趣,然而真正在这个领域内做出了开创性贡献的人却不是很多。要想在此领域有所作为,不仅要对组合设计的经典理论和常用方法有深入的了解,还要在此基础上有所创新。有许多国外的所谓彩票专家(比如美国的盖尔。霍华德女士)声称旋转矩阵是由她首先提出来的。实际上,所有的旋转矩阵都是组合数学家们经过多年的精心研究得出的,而不是霍华德这样的彩票专家所研究出来的。 

使用特权

评论回复
12
ayb_ice| | 2007-12-28 19:05 | 只看该作者

这种没有什么好的方法

使用特权

评论回复
13
yewuyi| | 2007-12-28 19:14 | 只看该作者

不知道用这做什么?

使用特权

评论回复
14
yewuyi| | 2007-12-29 10:27 | 只看该作者

用8个595的话,发了那么多字节再接收,好象也快不到那去啊

使用特权

评论回复
15
xieyuanbin| | 2007-12-30 12:41 | 只看该作者

实际概念就是8*8点阵图逆时针旋转90°

没什么好办法,只能用软件移位。等会写个汇编出来。如果用硬件,成本高,电路复杂,不划算。

使用特权

评论回复
16
xieyuanbin| | 2007-12-30 13:03 | 只看该作者

汇编代码


    CBLOCK 0X20
L7
L6
L5
L4
L3
L2
L1
L0
H0
H1
H2
H3
H4
H5
H6
H7
SHIFT_COUNT    ;计数
    ENDC

MATRIX:
    MOVLW    .8
    MOVWF    SHIFT_COUNT
    MOVLW    H0
    MOVWF    FSR
LOOP_M:
    RRF    L0,F
    RRF    INDF,F
    RRF    L1,F
    RRF    INDF,F
    RRF    L2,F
    RRF    INDF,F
    RRF    L3,F
    RRF    INDF,F
    RRF    L4,F
    RRF    INDF,F
    RRF    L5,F
    RRF    INDF,F
    RRF    L6,F
    RRF    INDF,F
    RRF    L7,F
    RRF    INDF,F
    INCF    FSR,F
    DECFSZ    SHIFT_COUNT
    GOTO    LOOP_M
    RETURN

使用特权

评论回复
17
xieyuanbin| | 2007-12-30 19:29 | 只看该作者

不好意思,我英文很不好,不知道那里什么是最简单的

数学也不好,这里的例子应该是最简单的。复杂一点的,比如在PHOTOSHOP中,把某个图片旋转一定角度,旋转留下的用背景色填充,因为图像**中每个像素包含三种颜色信息,每种颜色用一个字节表示,这样一个矩阵计算要复杂许多,但无非就是数据如何传输等等。

使用特权

评论回复
18
lanyong|  楼主 | 2007-12-30 20:31 | 只看该作者

兄弟,你的方法已经是最快的了.

不过,不要搞跳转.

直接一个个写下去就好.

用rom来换时间.

使用特权

评论回复
19
xieyuanbin| | 2007-12-30 22:03 | 只看该作者

知道,就是重复8次RRF那段

不过不用INDF间接寻址了,直接赋值,这是最省时间的,不过写得太长我怕大家烦

使用特权

评论回复
20
mikesullen| | 2008-1-4 14:47 | 只看该作者

硬件应该也可以

用8个锁存器,74hc373

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

457

帖子

2

粉丝