数据类型范围(基本)
数据类型 | 占内存字节数 | 表示范围 | 数量级 |
---|---|---|---|
char(signed char) | 1 | -128~127 | 2 |
unsigned char | 1 | 0~255 | 2 |
short int(signed short int) | 2 | -32,768~32,767 | 4 |
unsigned short int | 2 | 0~65,535 | 4 |
int(signed int) | 4 | -2,147,483,648~2,147,483,647(-231 ~ 231-1) | 9 |
unsigned int | 4 | 0~4,294,967,295 | 9 |
long int(signed long int) | 4 | -2,147,483,648~2,147,483,647(-231 ~ 231-1) | 9 |
unsigned long int | 4 | 0~4,294,967,295 | 9 |
float | 4 | -3.4x10-38 ~ 3.4x1038 | 38 |
double | 8 | -1.7x10-308 ~ 1.7x10308 | 308 |
long double | 8 | -1.7x10-308 ~ 1.7x10308 | 308 |
有符号与无符号数据
- 无符号数据(Unsigned Data):无符号数据只能表示非负整数。在内存中,无符号数据占用固定大小的存储空间,如8位、16位、32位等,视具体类型而定。例如,8位无符号数据可以表示0到255之间的整数。如果一个数值超出了该范围,那么它将会被截断或者溢出。在编程语言如C++中,通常使用“unsigned”关键字来表示无符号数据类型。
- 有符号数据(Signed Data):有符号数据可以表示正数、负数和零。在内存中,有符号数据同样占用固定大小的存储空间,但是可以表示的范围比无符号数据更大。例如,8位有符号数据可以表示-128到127之间的整数。这是因为存储空间的一部分被用来表示负数,所以正数的表示范围相应地减少了。在编程语言如C++中,通常使用默认的整数类型来表示有符号数据。
无符号16位强制转换为有符号
python
# 强制转换为16位有符号数据
def get_s16(val):
if val < 0x8000: # 32768
return val
else:
return (val - 0x10000) # val - 65536