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

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

正好是-2147483648最小值

int最大值+1为什么是-2147483648最小值-1为什么是2147483647的更多相关文章

  1. python3 获取int最大值

    python2 中获取int最大值 import sys i = sys.maxint print i 但是在python3中,报错: AttributeError: module 'sys' has ...

  2. 求int最大值以及int二进制

    求int最大值:(((unsigned int)(~0))>>1) 求int的2进制串 string str = ""; int iNum = 100; for(int ...

  3. 两个int值相乘超过int最大值

    System.out.println(100000000*1000 ); //输出结果是:1215752192 先将100000000*1000 的结果转化为二进制: 10111 01001000 0 ...

  4. sql server求分组最大值,最小值,最大值对应时间,和最小值对应时间

    先创建数据库 CREATE TABLE [dbo].[Students]( [Id] [int] IDENTITY(1,1) NOT NULL, [age] [int] NULL, [name] [n ...

  5. int -2147483648 ----- 2147483647

    int最大值+1为什么是-2147483648最小值-1为什么是2147483647   今天一个新手学编程就问到这个问题,很多人第一次学编程肯定会遇到这个问题,大部分都知道是溢出之类的,用源码和补码 ...

  6. 009、Java中超过了int的最大值或最小值的结果

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  7. [编译,报错以及其他] 有关C/C++中int不能用-2147483648当最小值的问题

    这个取决于今早看耗子叔的微博: 这里说到了int的取值范围的问题,int的取值是-2147483648 ~ 2147483647,但是如果直接在编译器(VS2013)中使用-2147483648会报错 ...

  8. C语言:通过返回指针的形式找出数组的最大值和最小值

    // //  main.c //  Pointer_max_min(return) // //  Created by ma c on 15/8/2. //  Copyright (c) 2015年 ...

  9. [DataTable]C# datatable取最大值最小值

    ArrayList al = new ArrayList(); DataTable dt = new DataTable(); dt.Columns.Add("A",typeof( ...

随机推荐

  1. as3 文档类引用

    /**文档类引用**/ public static var main:CoverMain; public function CoverMain() { main=this; }

  2. MVC中数据传递 ViewBag的使用

    ViewBag MVC3中 ViewBag.ViewData和TempData的使用和差别 在MVC3開始.视图数据能够通过ViewBag属性訪问.在MVC2中则是使用ViewData.MVC3中保留 ...

  3. ubuntu禁用super(win)键

    ubuntu在切换输入法使用super + space的时候经常会在按下super的时候弹出luncher,影响操作,解决方法为禁用super启动luncher. 1.安装compizconfig-s ...

  4. Jenkins服务器磁盘空间爆满问题解决

    现象: 从根目录开始,使用du -h -x --max-depth=1  查看哪个目录占用过高,打算对于过高目录中的内容适当删减腾出一些空间 通过追踪查询,发现是jenkins的构建纪录未清理,而且最 ...

  5. Haskell语言学习笔记(64)Lens(4)

    安装 lens-tutorial Control.Lens.Tutorial $ cabal install lens-tutorial Installed lens-tutorial-1.0.3 P ...

  6. nginx-----惹不起的端口修改

    1,查看端口是否被占用 打开CMD,输入输入netstat -aon | findstr :80 出现: TCP    0.0.0.0:80             0.0.0.0:0        ...

  7. memory management

    1. 高端内存: 内存的物理寻址范围比虚拟寻址范围大的多,有一些内存页不能永久的映射到内核地址空间. 2. 高端内存和低端内存是内核对内存物理页的划分. 参考:http://ilinuxkernel. ...

  8. groovy 环境配置

    win7: 下载 http://www.groovy-lang.org/download.html 将解压后的文件夹里的bin目录加入path环境变量

  9. with as (转)

    sql with as 用法(适用sqlserver,好像oracle也适用) Server 2005中提供了公用表表达式(CTE),使用CTE,可以使SQL语句的可维护性,同时,CTE要比表变量的效 ...

  10. appcan更新

    升级用到了config.xml文件中配置的‘更新地址‘所填写的url,此url开发者可任意配置自己的服务器地址* 当app执行uexWidget.checkUpdate()时,AppCan会请求上述u ...