给int类型赋值的话,0X7FFFFFFF代表最大值,0X80000000代表最小值

INT_MAX 代表最大值, INT_MIN 代表最小值


1、先说明负数怎么储存

(1) 十进制负数是以其补码储存在内存上

验证:求-8在内存上以二进制形式1的个数

思路是:拿变量,令值为1,与-8的二进制码的每一位做与运算,若与运算结果为1,则该位为1。

结论:输入-8,结果为29。

在32位系统上,-8的储存

-8的储存是以-8的补码,储存在内存上。

-8的原码 1000 0000 0000 0000 0000 0000 0000 1000

取反 由于第一位是符号位 不用改变 得:1111 1111 1111 1111 1111 1111 1111 0111

补码=反码+1 得::1111 1111 1111 1111 1111 1111 1111 1000

得到1的数量正好为29,所以-8的补码就是-8储存在内存上的二进制码

(2) 但是在十六进制,负数在内存中储存的是原码

验证:

对int test = 0x80000001 (对应十进制为-1) 检查其内存上的1的个数,发现只有2个1

故内存上原码为 1000 0000 0000 0000 0000 0000 0000 0001.

对十六进制的-8也是2个1

(3)我们来看看0x80000000的输出

0x80000000 的二进制位

原码 1000 0000 0000 0000 0000 0000 0000 0000

若最高位为符号位,则为-0,可是输出int i = 0x80000000 发现i= -(2^31)

原因是在十六进制中负数的二进制原码的最高位是符号位,后面的31位为序号位,不是值位。1后面的000 0000 0000 0000 0000 0000 0000 0000,表示序号1,表示负数中,从小到大的第一位。

由于int的最小值为-2^31,排在负数从小到大的序号1,所以int i = 0x80000000 输出为 -(2^31)

我们来看看0xFFFFFFFF

原码 1111 1111 1111 1111 1111 1111 1111 1111

最高位为1 ,为负数,序号位为第(2^31)-1位 (111 1111 1111 1111 1111 1111 1111 1111=(2^31-1) 所以0xFFFFFFFF为负数从小到大 第2^31-1位 ,即

-2^31+2^31-1= -1

输出int i = 0xFFFFFFFF 为 -1 符合

(4)十进制的补码也符合 符号位+序号位的原则

就拿-8来做例子:

-8的补码:1111 1111 1111 1111 1111 1111 1111 1000 可以看出最高位为1 序号位为第2^(31)-8位,(111 1111 1111 1111 1111 1111 1111 1000 = 2^(31)-8 )

则该补码表示的值为2^31- 2^(31)-8 = -8 符合

相关知识点补充:

十六进制用最高位作为符号位,1位负数,0为正数。

负数的位右移运算:

原则:若右移的数字为负值,则向右移动N位同时N个1补充在左边

若为正值,则以N个0补充在左边

参考链接:
https://blog.csdn.net/youyou362/article/details/72667951
https://blog.csdn.net/bo_fengyu/article/details/38434169

0X80000000与0X7FFFFFFF相关推荐

  1. 【博客13】“0x80000000“ 与 “0x7fffffff“

    **内容:**记录下"0x80000000" 与 "0x7fffffff" 相信大家对这两个一定不陌生的了吧.我一开始看到这两个的时候是一脸懵逼的,都搞不清楚头 ...

  2. 0X80000000和0X7FFFFFFF

    给int类型赋值的话,0X7FFFFFFF代表最大值,0X80000000代表最小值 @Native public static final int MIN_VALUE = 0x80000000; @ ...

  3. Java 解惑(Java Puzzler)

    郑重声明 本文内容来源于<Java解惑>一书,不是本人所独创,请尊重原创作者的劳动成果和著作的知识版权.本文摘录原著内容,并做部分学习标记,仅作为自己的学习笔记 数值表达式篇 1. 奇偶判 ...

  4. 2018.8.14-C#复习笔记总

    2018.8.14-C#复习笔记总 using System; using System.Collections.Generic; //using System.Linq; using System. ...

  5. 2018.8.14-C++复习笔记总

    2018.8.14-C++复习笔记总 // CPPTEST.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iost ...

  6. ospf序列号等问题

    OSPF使用的是顺序序列号,不是循环的,范围是0X80000000到0X7FFFFFFF 第一个8是负的,第一个LSA的序列号是0X80000001,然后累加到0,在从0到0X7FFFFFFF 如果真 ...

  7. php 整数转换为32 位,PHP哈希函数返回一个整数(32位int)(PHP hashing function that returns an integer (32bit int))...

    PHP哈希函数返回一个整数(32位int)(PHP hashing function that returns an integer (32bit int)) 目标是使用INT(不是BIGINT或ME ...

  8. LightOJ 1269 Consecutive Sum (Trie树)

    Jan's LightOJ :: Problem 1269 - Consecutive Sum 题意是,求给定序列的中,子序列最大最小的抑或和. 做法就是用一棵Trie树,记录数的每一位是0还是1.查 ...

  9. Math.abs为Integer.Min_VALUE返回错误的值

      Math.abs为Integer.Min_VALUE返回错误的值 这段代码: System.out.println(Math.abs(Integer.MIN_VALUE)); 回报-2147483 ...

最新文章

  1. 2022-2028年中国氟硅橡胶产业发展动态及投资前景分析报告
  2. 李彦宏候选中国工程院院士
  3. centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
  4. python2版本和python3版本-python2和python3哪个版本新
  5. wxWidgets:wxGridUpdateLocker类用法
  6. 牛客练习赛44 B 小y的线段 (思维)
  7. postman数据保存在哪里_Postman 历史记录导出的解决方案
  8. OSI七层模型都是什么?
  9. 60-320-040-使用-去重-HyperLogLog 去重计数
  10. 谈软件测试人员定位---三年软件测试总结
  11. 读取和写入文件的最简单方法
  12. sitemesh应用
  13. vue富文本编辑器wangeditor必填判断
  14. excel批量删除密码解除密码保护 可多个密码
  15. 互联网晚报 | 06月08日 星期三 | ​教育部回应高考试题疑泄露;​上海落户新规;字节跳动考虑出售得物少数股份...
  16. TensorFlow中的通信机制——Rendezvous(一)本地传输
  17. x86服务器是32位系统嘛,x86是什么意思?x86是32位还是64位?
  18. SUPER-VLAN
  19. linux美学设计,扁平化设计美学探讨
  20. docker搭建minio

热门文章

  1. 扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码
  2. 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能
  3. C#虚方法详解(一切尽有,建议收藏!!!)
  4. 京东白条抢滩消费信贷 赔钱抢市场
  5. 判断平面上两直线相交
  6. tensorflow与keras
  7. el-popover在列表里循环使用,关闭不了????
  8. 怎样正确选择电动机的功率?
  9. 学习杂记(如何让两个div在同一行)
  10. python lncrna_一种基于序列组成,结构信息及理化特征的lncRNA鉴定方法与流程