打印

关于C语言的疑问

[复制链接]
2161|17
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jzxeagle|  楼主 | 2010-5-14 08:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
hbicecream| | 2010-5-14 09:42 | 只看该作者
直接按位取反就行了
A = ~B;

使用特权

评论回复
板凳
jzxeagle|  楼主 | 2010-5-14 09:55 | 只看该作者
刚才举的例子特殊了。我的意思是8位数据整个颠倒过来。例如:0x23,转换后是0xc4

使用特权

评论回复
地板
colinluan| | 2010-5-14 10:09 | 只看该作者
没有这样的库函数,至少我没见过,自己写个函数不就行了。

使用特权

评论回复
5
fengfeng| | 2010-5-14 10:39 | 只看该作者
自己写。。

使用特权

评论回复
6
zc3909| | 2010-5-14 12:20 | 只看该作者
没有现成的,自己写吧

使用特权

评论回复
7
iciciu| | 2010-5-14 13:45 | 只看该作者
先把CPU设置为大端写进去,然后再设置成小端,再读出来。。。。。。呵呵。。

使用特权

评论回复
8
hbicecream| | 2010-5-14 15:04 | 只看该作者
先把CPU设置为大端写进去,然后再设置成小端,再读出来。。。。。。呵呵。。
iciciu 发表于 2010-5-14 13:45


那ROM里的指令咋执行?



自己写个函数吧,不在乎效率就用移位,在乎效率就用查表

使用特权

评论回复
9
luffy59704331| | 2010-5-14 16:52 | 只看该作者
先把CPU设置为大端写进去,然后再设置成小端,再读出来。。。。。。呵呵。。
经典
哈哈

使用特权

评论回复
10
反质子| | 2010-5-14 17:39 | 只看该作者
本帖最后由 反质子 于 2010-5-14 17:48 编辑

反转字节 蝶形变换
哈哈以前看别人贴出来的 觉得有意思

使用特权

评论回复
11
handan586| | 2010-5-14 18:28 | 只看该作者
不太懂

使用特权

评论回复
12
vodka| | 2010-5-14 21:49 | 只看该作者
linux下网络通信主机端和net端类似有这样的转换函数 htons()
另外改变大小端的方法是错误的,大小端只是针对一个字中各个字节间而言的

使用特权

评论回复
13
kubuco| | 2010-5-14 22:07 | 只看该作者
那个大端小端想法不错。

使用特权

评论回复
14
李冬发| | 2010-5-14 23:31 | 只看该作者
大端小端办不到!

使用特权

评论回复
15
有意思| | 2010-5-15 01:51 | 只看该作者
uint8 bitinverse(uint8 x)
{
    x = (x >> 4) | (x << 4);
    x = (x >> 2 & 0x33) | (x << 2 & 0xcc);
    x = (x >> 1 & 0x55) | (x << 1 & 0xaa);
    return x;       
}

使用特权

评论回复
16
有意思| | 2010-5-15 01:56 | 只看该作者
uint8 bitinverse(uint8 x)
{
x = (x >> 4) | (x << 4);
x = (x >> 2 & 0x33) | (x << 2 & 0xcc);
x = (x >> 1 & 0x55) | (x << 1 & 0xaa);
return x;
}

uint16 bit16inverse(uint16 x)
{
x = (x >> 8) | (x << 8);
x = (x >> 4 & 0x0F0F) | (x << 4 & 0xF0F0);
x = (x >> 2 & 0x3333) | (x << 2 & 0xCCCC);
x = (x >> 1 & 0x5555) | (x << 1 & 0xAAAA);
return x;
}


uint32 bit32inverse(uint32 x)
{
x = (x >> 16) | (x << 16);
x = ((x >> 8) & 0x00FF00FF) | ((x << 8) & 0xFF00FF00);
x = ((x >> 4) & 0x0F0F0F0F) | ((x << 4) & 0xF0F0F0F0);
x = ((x >> 2) & 0x33333333) | ((x << 2) & 0xCCCCCCCC);
x = ((x >> 1) & 0x55555555) | ((x << 1) & 0xAAAAAAAA);
return x;
}

使用特权

评论回复
17
aresc| | 2010-5-15 08:06 | 只看该作者
int bit_reverse(int N, int m_bitWidth)
{

        int bitm;
        int bitrev_N = 0;
        for (bitm=1; bitm < (1<<m_bitWidth); bitm <<= 1)
        {
                if( N & bitm )
                {
                        bitrev_N++;
                }
                bitrev_N <<= 1;
        }
       
        return bitrev_N;
}
取m_bitWidth = 8就可以了,FFT变换中的按位反序。

使用特权

评论回复
18
xmar| | 2010-5-16 22:12 | 只看该作者
unsigned char bit_reverse(unsigned char m_bitWidth)
{
        unsigned char i, bitrev=0;
        for(i=0; i<8; i++) bitrev |= (1 & (m_bitWidth>>i))<<(7-i);
        return bitrev;
}

使用特权

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

本版积分规则

36

主题

98

帖子

0

粉丝