数据类型范围(基本)
| 数据类型 |
占内存字节数 |
表示范围 |
数量级 |
| 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位强制转换为有符号
python1 2 3 4 5 6
| def get_s16(val): if val < 0x8000: return val else: return (val - 0x10000)
|
参考文章:
C语言基本数据类型及其范围
Python中读取到16进制数如何转成有符号数值