初级会员

- 积分
- 58
- 金钱
- 58
- 注册时间
- 2021-12-17
- 在线时间
- 24 小时
|
u8是unsigned char
u16是unsigned short,
u32是unsigned long
u8,u16,u32都是C语言数据类型,分别代表8位,16位,32位长度的数据类型,一个字节是8位,所以u8是1个字节,u16是2个字节,u32是4个字节。
可以在stm32库头文件中找到数据类型的声明
在stdint.h中:
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned long uint32_t;
在stm32f10x.h 中:
typedef uint32_t u32;
typedef uint16_t u16;
typedef uint8_t u8;
扩展资料
基本型:类型说明符为int,在内存中占4个字节,外语全称:integer。
短整型:类型说明符为short int或short。所占字节和取值范围均与基本型相同。
长整型:类型说明符为long int或long,在内存中占4个字节。
无符号型:类型说明符为unsigned。无符号型又可与上述三种类型匹配而构成:
无符号基本型:类型说明符为unsigned int或unsigned。
无符号短整型:类型说明符为unsigned short。
无符号长整型:类型说明符为unsigned long。
下表列出了C语言中各类整型数据所分配的内存字节数及数的表示范:
类型说明符 数的范围 字节数
int -32768~32767,即 -2~(2-1) 4
unsigned int 0~65535,即 0~(2-1) 4
short int -32768~32767,即 -2~(2-1) 2
unsigned short int 0~65535,即 0~(2-1) 2
long int -2147483648~2147483647,即 -2~(2-1) 4
unsigned long 0~4294967295,即0~(2-1) 4
char -128 ~ +127 1(8bit)
signed char -2^7 ~ 2^7-1 1(8bit)
unsigned char 0 ~ 2^8-1 1(8bit)
CPU按照其处理信息的字长可以分为:8位微处理器、16位微处理器、32位微处理器以及64位微处理器等。字、半字是根据处理器的特性决定的,32位处理器的字是32bit,半字是16bit。16位微处理器的字是16bit,半字是8bit,而字节则都是8bit。stm32是32bit处理器,所以它的字是32bit的(一次处理4字节长度的数据),半字自然就是16bit(2字节)。存储半字类型数据的寄存器由u16类型的变量访问,但是如果用u8类型变量只能访问该数据低8位,用u32类型变量读的时候没问题,但写的时候会因编译器的不同而出现偏差。
unsigned char是无符号字节型,char类型变量的大小通常为1个字节(1字节=8个位),且属于整型。整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明的整型变量都是有符号的类型(char有点特别),如果需声明无符号类型的话就需要在类型前加上unsigned。无符号版本和有符号版本的区别就是无符号类型能保存2倍于有符号类型的数据,比如16位系统中一个int能存储的数据的范围为-32768~32767,而unsigned能存储的数据范围则是0~65535。
同样,在32位系统中一个char类型一般为8个bit,所以能存储的数据范围为-128~127,而unsigned char则是0~255,字符型所存储的数据是用来表示字符的,例如ASCⅡ或Unicode
|
|