C++中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。int型数据是一个有符号的整型数据,其最高位为符号位(0表示正,1表示负)。

C++中,int占用4字节,32比特,数据范围为-2147483648~2147483647[-2^31~2^31-1]。

详细解答过程,以两个字节为例:

在C中,int型数据是一个有符号的整型数据,其最高位为符号位(0表示正,1表示负)。

1个字节等价于8个二进制位,在很多计算机系统中,通常采用补码来表示带符号的数(补码系统)。

原码:最高位为符号位(0表示正,1表示负),其他位按照一般的方法来表示数的绝对值。

反码:对于一个带符号的书来说,正数的反码与其原码相同,负数的反码为其原码除符号位以外的各位按位取反。

补码:正数的补码与其原码相同,负数的补码为其反码在最低位加1。

两个字节,所以,二进制原码最大为0111 1111 1111 1111 = 2^15 - 1 = 32767。

最小为1111 1111 1111 1111 = - (2^15 - 1) = -32767。

原码中0的表示有正负之分[+0]原 = 0000 0000 0000 0000;[-0]原 =1000 0000 0000 0000。

所以二进制原码表示时,范围是 -32767 ~ -0和0~32767,因为有两个0,所以不同的数值个数一共有2^16 - 1个。

而计算机采用而进驻补码存储数据时,0的表示是唯一的:[+0] 补= [-0] 补= 0000 0000 0000 0000

此时正数编码不变,从0000 0000 0000 0000 ~ 0111 1111 1111 1111依然表示0 ~ 32767。

负数表示需依照补码规则,即-32767的补码为1000 0000 0000 0001。

所以补码中会比原码多一个编码出来,这个编码就是1000 0000 0000 0000,因为任何一个原码都不可能在转化成补码时变成1000 0000 0000 0000,所以人们规定1000 0000 0000 0000这个补码编码为-32768。

结论:int型数据占两个字节时,可表示2^16种变化,最高位为符号位,所以正负有2^15中变化,因为0也占一种,因此正负数的最大值并不对称,即该int型数据取值范围为-32768 ~ 32767。

2b99bc1608d8387fba6508e3f27115d.png

扩展资料:

int使用方法:

定义方法:

int i;//定义整形变量i

int i=1;//定义整形变量i并初始化为1

定义常量:

const int i;//编译错误,因为常量需要给予一个初值

const int i=1;//定义常量i,值为1

Java定义常量:

final int i=1;//定义常量i,值为1

推荐教程:《C语言》

更多相关文章

  1. c语言整除符号是什么?
  2. c语言换行符号是什么
  3. c语言关系运算符号有哪些?
  4. c语言取余符号是什么
  5. Golang格式化符号%b是什么意思
  6. 数据中有'<'、'&'符号时,封装的XML就无法解析的解决方法
  7. 详解xml型字符串解析时存在& < >符号时的解决方案
  8. Markdown中输入数学公式及LaTex常用数学符号整理
  9. PHP方法处理微信昵称特殊符号过滤

随机推荐

  1. php获取当前执行的php文件的文件名
  2. 如何解决php Function split() is deprec
  3. php调取摄像头实现拍照功能的方法
  4. PHP中将字符串全部转为小写或大写的方法
  5. PHP POSIX正则表达式
  6. 分享新浪图床上传接口源码
  7. php实现对文件夹目录中的文件进行排序的
  8. Linux服务器查看 PHP 是否支持mail()函数
  9. PHP中如何通过getopt解析GNU C风格命令行
  10. PHP-Ajax实现异步上传图片到新浪图床