在C语言中,int型数据所占的字节和具体的编译器有关,32位编译器int占4个字节(VC,C-free),16位编译器int占2个字节(详见“int型数据所占字节和什么有关”)。

以两个字节为例:

在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

在C语言中,int型数据的取值范围?相关推荐

  1. c语言用int取整取了小数_[c语言取整算法]C语言中float型数据怎么取整数部分算法或取小数部分...

    C语言中float型数据怎么 取整数部分算法 或取小数部分 float福n=12.223; int x=(int)n; float y=n-(float)x; C语言有哪些取整函数? C语言有以下几种 ...

  2. c语言int作用,c语言中int的用法有哪些

    c语言中int的用法有哪些 C/C++编程语言中,int表示整型变量,是一种数据类型,用于定义一个整型变量,在不同编译环境有不同的大小,不同编译运行环境大小不同下面小编给大家整理了c语言中int的用法 ...

  3. c语言中int作用,c语言中int的用法(5页)-原创力文档

    第 第 PAGE 1 页 共 NUMPAGES 1 页 c语言中int的用法 C/C++编程语言中,int表示整型变量,是一种数据类型,下面小编就跟你们详细介绍下c语言中int的用法,希望对你们有用. ...

  4. c语言double类型是几字节,c语言中int long float double 等类型所占字节及输出表示(转)...

    16位编译器 char :1个字节 char*(即指针变量): 2个字节 short int : 2个字节 int: 2个字节 unsigned int : 2个字节 float: 4个字节 doub ...

  5. 在c语言中char型数据在内存中的储存形式为什么

    在c语言中char型数据在内存中的储存形式为"ASCII码".在C语言中,将一个字符常量放到一个字符变量中,实际并不是把该字符本身放到内存单元中,而是将与该字符相对应的ASCII码 ...

  6. int在c语言中的作用,C语言中int,Uint,uint16等有什么区别以及用处

    C语言中int,Uint,uint16等有什么区别以及用处.在C中,既然有了int,为什么还要有uint?特别是uint16,uint32等又有什么用?他们有什么区别?" --------- ...

  7. 在c语言中 char型数据在内存中的存储形式是,在c语言中char型数据在内存中的存储形式是什么?...

    在c语言中char型数据在内存中的存储形式是ASCII码.在C语言中,char型数据是将一个字符常量放到一个字符变量中,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单 ...

  8. c语言int作用,c语言中int的用法

    C/C++编程语言中,int表示整型变量,是一种数据类型,下面学习啦小编就跟你们详细介绍下c语言中int的用法,希望对你们有用. c语言中int的用法:整型int C 语言提供了很多整数类型(整型), ...

  9. C语言中int、long等类型所占的字节数

    C语言中int.long等类型所占的字节数.实验环境是win10,64位操作系统. #include<stdio.h> int main() {printf("sizeof(in ...

最新文章

  1. 引导加载程序之争: LILO 和 GRUB
  2. mxnet arg_params, aux_params
  3. python自学教材-python零基础自学教材
  4. 细说SSO单点登录(转)
  5. c 调用c语言形参为double,C学生作业,’%f’需要’float *’类型的参数,但参数2的类型为’double *’...
  6. OpenCV相机校准camera calibration的实例(附完整代码)
  7. 正则表达式小应用之对xml格式字符串每个字段加双引号
  8. 可交互的 Attention 可视化工具!我的Transformer可解释性有救了?
  9. win10 tensorflowgpu-2.0安装cuda10.0 +cudnn7.4
  10. magento2 后台Grid点击column进行排序时会出现单个重复record
  11. [Java] 蓝桥杯ALGO-11 算法训练 瓷砖铺放
  12. Hadoop:Hadoop简介及环境配置
  13. Linux C++,使用log4cpp记录日志示例详解
  14. 关于使用response.addCookie 添加失败
  15. 《如何有效阅读一本书》:读再多书,不如先学会如何读书
  16. 15s是什么意思c语言,15s是什么意思
  17. P1397 [NOI2013] 矩阵游戏(矩阵乘法欧拉定理)
  18. 用行列式的定义方法求解n阶行列式的值(C++)
  19. python123怎么注销账号_怎么注销账号
  20. 飞行对小鸟来说压力很大吗?

热门文章

  1. Python在命令行模式下如何退出命令行
  2. 根据身份证获取出生日期
  3. 不同dom的blur事件和click事件发生冲突
  4. C++ Reference: Standard C++ Library reference: C Library: cstdio
  5. 树莓派实验室python人脸识别_使用树莓派进行简易人脸识别
  6. python-函数(function)
  7. 梯度下降—Python实现
  8. Maximum length exceeded错误的解决办法
  9. 如何将png图片转为heif格式
  10. Python 中File(文件) 方法?