linux 16位类型,DSP 数据类型总结

这两天开始真正DSP编程,遇到个很头痛的问题,也是很基础的问题。归根到底,还是自己对数据类型没有弄清楚。

今天整理下:

存储顺序

大尾端和小尾端

1.定义

大尾端:高位在低地址。

小尾端:尾位在低地址。

2.字节层次。

如整数0x12345678在内存中应该如下存放:

地低: base | base+1 | base+2 | base+3 |

------------------------------------------------ |

大端 | 12 | 34 | 56 | 78 |

----------------------------------------------- |

小端 | 78 | 56 | 34 | 12 |

ps:一般PC是小端存储的。 DSP中,要根据芯片得到。

3.字节内位序 。

在字节内依然是:

大端:高位放在低地址。

小端:低位放在低地址。

即大端与小端位序完全是镜像的。下面的程序可证明。

int _tmain(int argc, _TCHAR* argv[])

{

struct BitData {

unsigned Bit0_3:4;

unsigned Bit4_7:4;

unsigned Bit8_11:4;

unsigned Bit12_15:4;

};

union SData {

unsigned short Data;

struct BitData BData;

} ssData;

ssData.Data=0x1234;//此时BData与Data完全共享同一空间。

printf("%x\t%x\t%x\t%x\n",ssData.BData.Bit0_3,ssData.BData.Bit4_7,ssData.BData.Bit8_11,ssData.BData.Bit12_15);

return 0;

}

在运行程序前请先推理一下会输出什么,然后运行一下看看结果。

上述程序在普通PC上(小尾端)结果应该是:

4 3 2 1

内置数据类型

char 8 -2^7 ~ 2^7-1 %c %c、%d、%u

signed --

char 8 -2^7 ~ 2^7-1 %c %c、%d、%u

unsigned --

char 8 0 ~ 2^8-1 %c %c、%d、%u

[signed]

short

[int] 16 -2^15 ~ 2^15-1 %hd

unsigned

short

[int] 16 0 ~ 2^16-1 %hu、%ho、%hx

[signed] --

int 32 -2^31 ~ 2^31-1 %d

unsigned --

[int] 32 0 ~ 2^32-1 %u、%o、%x

[signed]

long

[int] 32 -2^31 ~ 2^31-1 %ld

unsigned

long

[int] 32 0 ~ 2^32-1 %lu、%lo、%lx

[signed]

long long

[int] 64 -2^63 ~ 2^63-1 %I64d

unsigned

long long

[int] 64 0 ~ 2^64-1 %I64u、%I64o、%I64x

-- --

float

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值