有符号数和无符号数

刷题刷到了有符号数的问题,回顾一下知识点

概念

有符号数(signed),可以区分正负数;最高位表示数值的正负(0表示正数,1表示负数)
无符号数(unsigned),不区分正负数(只有整数类型)
虽然无符号数所能表示的最大数值大于有符号数,但两者所能表示的数值范围相同。
eg.short int :[-128,0),[0,127]
unsigned short int:[0,255]

当表达式中存在有符号数和无符号数类型时,所有的操作都自动转换为无符号类型。可见无符号数的运算优先级高于有符号数。

一些数据类型的长度

short int:8位(2字节);
int:16位(4字节);
long int:16位;
long long int:32位;
C++的标准并没有规定每种类型占多少位,只是说 “sizeof(long)>=sizeof(int)>=sizeof(short)”,所以具体的字节数都是根据编译器来确定的。

原码、反码、补码

原码:一个整数,按照绝对值的大小转换成二进制数,最高位为符号位。

反码:将原码除最高位(符号位)外,其余各位按位取反,所得到的二进制码。正数的反码为原码。

补码:反码最低位加1即为补码。正数的补码为原码。

心算求补:从最低位开始至找到的第一个1均不变,符号位不变,这之间的各位“求反”(0变1;1变0)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值