您的位置 首页 5G

在ARM体系使用的数据类型

数据类型长度(位)对齐特性Char81(字节对齐)short162(百字对齐)Int324(字对齐)Long324(字对齐)Longlong644(字对…

数据类型 长度(位) 对齐特性
Char 8 1(字节对齐)
short 16 2(百字对齐)
Int 32 4(字对齐)
Long 32 4(字对齐)
Longlong 64 4(字对齐)
Float 32 4(字对齐)
Double 64 4(字对齐)
Long double 64 4(字对齐)
All pointers 32 4(字对齐)
Bool(C++ only) 32 4(字对齐)

1.整数类型
在ARM体 系中,整数类型是以2的补码方式存储的。关于long long类型来说,在little endian内存形式下,其低32位保存在低地址的字单元中,高32为保存在高地址的字单元中;在big endian形式下,其低32位保存在高地址的字单元中,高32为保存在低地址的字单元中。关于整型数据的操作恪守下面的规矩:
**一切带符号的整型书的运算是依照二进制的补码进行的。
**带符号的整型数的运算不进行符号的扩展。
**带符号的整型数的右移操作是管用移位。
**拟定的移位位数的数是8位的无符号数。
**进行移位操作的数被作为32位数。
**超越31位的逻辑左移的成果为0。
**关于无符号数和有符号的正数来说,超越32位的右移操作成果为0;关于有符号的负数来说,超越32位的右移操作成果为-1。
**整数除法运算的余数和除数有相同的符号。
**当把一个整数截断成位数更短的整数类型的数时,并不能确保所得到的成果的最高位的符号位的正确性。
**整型数据之间的类型转化不会发生异常中断。
**整型数据的溢出不会发生异常中断。
**整型数据除以0将会发生异常中断。
2.浮点数
在ARM系统中,浮点数是依照IEEE规范存储的。
**float类型的数是依照IEEE的单精度数表明的。
**double和long double 是用IEEE的双精度数表明的。
关于浮点数的操作恪守下面的规矩:
**恪守正常的IEEE754规矩。
**当默许情况下制止浮点数运算异常中断。
**当发生卷绕时,用最接近的数据来表明。
3.指针类型的数据
下面的规矩适用于处数据成员指针以外的其他指针:
**NULL被界说为0。
**相邻的两个存储单元地址相差一。
**在指向函数的指针和指向数据的指针进行数据转化时,编译器将会发生正告信息。
**类型size_t被界说为unsigned int.
**类型ptrdiff_t被界说为signed int。
**两个指针类型的数据相减时,成果可以依照下面的公式得到。
((int)a-(int)b)/(int)sizeof(type pointed to)
这时,只需指针所指的目标不是pack的,其对齐特性可以满意整除的要求。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/274805.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部