数据类型及强制转换

数据类型范围(基本)

数据类型占内存字节数表示范围数量级
char(signed char)1-128~1272
unsigned char10~2552
short int(signed short int)2-32,768~32,7674
unsigned short int20~65,5354
int(signed int)4-2,147,483,648~2,147,483,647(-231 ~ 231-1)9
unsigned int40~4,294,967,2959
long int(signed long int)4-2,147,483,648~2,147,483,647(-231 ~ 231-1)9
unsigned long int40~4,294,967,2959
float4-3.4x10-38 ~ 3.4x103838
double8-1.7x10-308 ~ 1.7x10308308
long double8-1.7x10-308 ~ 1.7x10308308

有符号与无符号数据

  • 无符号数据(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

参考文章:
C语言基本数据类型及其范围
Python中读取到16进制数如何转成有符号数值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值