C/C++整数范围和二进制、十六进制表示

C/C++中,整型数据是用int来进行定义的, 占4个字节。

最高位为符号位,最高位为0,则为正数;最高位为1,则为负数。

最大值为INT_MAX = 2 31 − 1 2^{31}-1 2311
二进制表示是: 0111    1111    1111    1111    1111    1111    1111    1111 0111 \ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111 \ \ 1111 \ \ 1111 0111  1111  1111  1111  1111  1111  1111  1111
十六进制表示为:0x7FFFFFFF

最小值为INT_MIN = − 2 31 -2^{31} 231
二进制表示是: 1000    0000    0000    0000    0000    0000    0000    0000 1000\ \ 0000\ \ 0000\ \ 0000\ \ 0000\ \ 0000\ \ 0000\ \ 0000 1000  0000  0000  0000  0000  0000  0000  0000
十六进制表示为:0x80000000

再举个栗子: − 5 -5 5
负数在计算机中以补码的形式存在。
原码为

1000    0000    0000    0000    0000    0000    0000    0101 1000\ \ 0000\ \ 0000\ \ 0000\ \ 0000\ \ 0000\ \ 0000\ \ 0101 1000  0000  0000  0000  0000  0000  0000  0101

反码(符号位不变,其他位全部取反):

1111    1111    1111    1111    1111    1111    1111    1010 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1010 1111  1111  1111  1111  1111  1111  1111  1010

补码(反码最末位加一):

1111    1111    1111    1111    1111    1111    1111    1011 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1111\ \ 1011 1111  1111  1111  1111  1111  1111  1111  1011

十六进制表示为:0xFFFFFFB

另外,左移k位就是乘以 2 k 2^k 2k, 右移k位就是除以 2 k 2^k 2k

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值