int最大值+1为什么是-2147483648最小值-1为什么是2147483647

 

今天一个新手学编程就问到这个问题,很多人第一次学编程肯定会遇到这个问题,大部分都知道是溢出之类的,用源码和补码就很容易说明

int i = -2147483648 ;这是不允许的 VS里报的错 error C4146 : 一元负运算符应用于无符号类型,结果仍为无符号类型错误,

那么我们就会想,如果非要用int存 -2147483648那么符号位和数据位共用, int的第一位二进制是符号位0是整数,1是负数

-2147483647 原码1111 1111 1111 1111 1111 1111 1111 1111

-2147483647-1=-2147483648;

由于cpu里面存的是补码计算

-2147483647  补码1000 0000  0000 0000 0000 0000 0000 0001

-1       补码1111 1111 1111 1111 1111 1111 1111 1111

得到-2147483648 补码1000 0000 0000 0000 0000 0000 0000 0000

-2147483648-1得到2147483647;

-2147483648 补码1000 0000 0000 0000 0000 0000 0000 0000

-1      补码1111 1111 1111 1111 1111 1111 1111 1111

得到     补码0111 1111 1111 1111 1111 1111 1111 1111

正好是2147483647 最大值

2147483647+1得到-2147483648;

2147483647 补码0111 1111 1111 1111 1111 1111 1111 1111

1      补码0000 0000 0000 0000 0000 0000 0000 0001

得到      补码1000 0000 0000 0000 0000 0000 0000 0000

int -2147483648 ----- 2147483647的更多相关文章

  1. 现在的C语言编辑器里的int范围为什么是-2147483648~2147483647 2014-08-05 10:21 100人阅读 评论(0) 收藏

    下面是引用百度文库的一段话: "这得从二进制的原码说起: 如果以最高位为符号位,二进制原码最大为0111111111111111=215-1=32767 最小为111111111111111 ...

  2. int32 无符号范围 -2147483648~2147483647

    int32 无符号范围 -2147483648~2147483647

  3. char,short ,int ,long,long long,unsigned long long数据范围

    from:http://www.cnblogs.com/A123456A/archive/2013/01/25/2876634.html char,short ,int ,long,long long ...

  4. P1001 A+B Problem(int,long long)

    题目描述 输入两个整数 a,b,输出它们的和(∣a∣,∣b∣≤109). 注意 Pascal 使用 integer 会爆掉哦! 有负数哦! C/C++ 的 main 函数必须是 int 类型,而且最后 ...

  5. [ACM训练] 算法初级 之 搜索算法 之 广度优先算法BFS (POJ 3278+1426+3126+3087+3414)

    BFS算法与树的层次遍历很像,具有明显的层次性,一般都是使用队列来实现的!!! 常用步骤: 1.设置访问标记int visited[N],要覆盖所有的可能访问数据个数,这里设置成int而不是bool, ...

  6. Intellj IDEA Java随笔

    敲击sout+Tab会出现:System.out.println(); int(-2147483648, 2147483647) 当一个方法类型不是void时,那么我们不仅要考虑它正确时的返回值,错误 ...

  7. java的数据类型的转换

    一:java的数据类型转换除布尔类型boolean(不能转换)有两种:<一> 自动转换: <二> 强制转换 <一>.自动转换:就是将小的数据类型自动转换成大的数据类 ...

  8. MySQL学习笔记--数据类型

    一.数据类型(内容参考<SQL学习指南>)不完整 1.文本类型 文本类型 最大字节数 tinytext 255 text 65535 varchar 65536 mediumtext 16 ...

  9. 基本数据类型范围大小&&字节大小

    char -128 ~ +127 short -32767 ~ + 32768 unsigned short 0 ~ 65536 int -2147483648 ~ +2147483647 unsig ...

随机推荐

  1. iOS 打包方式

    https://www.cnblogs.com/wengzilin/p/4601684.html

  2. MySQL 中的数据类型介绍(转)

    据我统计,MySQL支持39种(按可使用的类型字段统计,即同义词也作多个)数据类型.下面的介绍可能在非常古老的mysql版本中不适用. 转载出处:http://blog.csdn.net/anxpp/ ...

  3. maven工程的拆分与聚合

    1.创建父工程: 首先创建maven Project: 点击next,进入下一个页面,勾选上create a simple project: 点击next,进入下一页面,在这里与创建普通maven工程 ...

  4. vue项目优化之路由懒加载

    const login = () =>import('@/views/login'); export default new Router({ routes:[ { path:'/login', ...

  5. C#百度图片识别API调用返回数据包解析

    百度图片识别api接口 public static JObject GeneralBasic(string apikey,string secretkey,string path) { var cli ...

  6. oracle 使用exp命令 sys用户登录 导出表存为dmp文件

    在cmd下面,使用exp命令,格式为 exp \"sys/123456@dbname as sysdba\" file=d:\dmp\test.dmp tables=sys.tes ...

  7. 计算器类(C++&JAVA——表达式转换、运算、模板公式)

    运行: (a+b)*c 后缀表达式:ab+c* 赋值: Enter the a : 10 Enter the b : 3 Enter the c : 5 结果为:65 代码是我从的逻辑判断系统改过来的 ...

  8. PAT 1007 素数对猜想(20)

    1007 素数对猜想(20 分) 让我们定义d​n​​为:d​n​​=p​n+1​​−p​n​​,其中p​i​​是第i个素数.显然有d​1​​=1,且对于n>1有d​n​​是偶数."素 ...

  9. BZOJ2730 [HNOI2012]矿场搭建 - Tarjan割点

    Solution 输入中没有出现过的矿场点是不用考虑的, 所以不用考虑只有 一个点 的点双联通分量. 要使某个挖矿点倒塌, 相当于割去这个点, 所以我们求一遍割点和点双联通分量. 之后的点双联通分量构 ...

  10. Add to Array-Form of Integer LT989

    For a non-negative integer X, the array-form of X is an array of its digits in left to right order.  ...