打印
[STM32]

求一高效算法

[复制链接]
1179|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caihong001|  楼主 | 2014-3-24 22:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
比如输入0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff

0000 0000
0001 0001
0010 0010
0011 0011
0100 0100
0101 0101
0110 0110
0111 0111
1000 1000
1001 1001
1010 1010
1011 1011
1100 1100
1101 1101
1110 1110
1111 1111

要求输出0xaaaa,0xcccc,0xf0f0,0xff00,0xaaaa,0xcccc,0xf0f0,0xff00

横着看是输入,竖着看是输出,有什么高效的算法可以实一这一效果呢??

相关帖子

沙发
ayb_ice| | 2014-3-25 11:21 | 只看该作者
只能取BIT组合了
对ARM来说还是挺适合的

使用特权

评论回复
板凳
caihong001|  楼主 | 2014-3-29 13:53 | 只看该作者
ayb_ice 发表于 2014-3-25 11:21
只能取BIT组合了
对ARM来说还是挺适合的

什么意思??能说出具体的方法吗?

使用特权

评论回复
地板
ayb_ice| | 2014-3-31 08:06 | 只看该作者
//_____________________
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned int U32;

enum{
        BIT7 = 0x80,

};

        U16 out[8];
        for(U32 k=0; k<8; k++){
                U8 t = (BIT7 >> k);
                for(U32 i=0; i<16; i++)
                        if(input[i] & t){
                                out |= (1ul<<i);
                        }
                }
        }

        while(1);

使用特权

评论回复
5
ayb_ice| | 2014-3-31 08:07 | 只看该作者
//_____________________
typedef unsigned char U8;
typedef unsigned short U16;
typedef unsigned int U32;

enum{
        BIT7 = 0x80,

};

        U16 out[8];
        for(U32 k=0; k<8; k++){
                U8 t = (BIT7 >> k);
                for(U32 i=0; i<16; i++)
                        if(input[i] & t){
                                out[k] |= (1ul<<i);
                        }
                }
        }

        while(1);

使用特权

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

本版积分规则

46

主题

91

帖子

1

粉丝