0X80000000与0X7FFFFFFF
给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相关推荐
- 【博客13】“0x80000000“ 与 “0x7fffffff“
**内容:**记录下"0x80000000" 与 "0x7fffffff" 相信大家对这两个一定不陌生的了吧.我一开始看到这两个的时候是一脸懵逼的,都搞不清楚头 ...
- 0X80000000和0X7FFFFFFF
给int类型赋值的话,0X7FFFFFFF代表最大值,0X80000000代表最小值 @Native public static final int MIN_VALUE = 0x80000000; @ ...
- Java 解惑(Java Puzzler)
郑重声明 本文内容来源于<Java解惑>一书,不是本人所独创,请尊重原创作者的劳动成果和著作的知识版权.本文摘录原著内容,并做部分学习标记,仅作为自己的学习笔记 数值表达式篇 1. 奇偶判 ...
- 2018.8.14-C#复习笔记总
2018.8.14-C#复习笔记总 using System; using System.Collections.Generic; //using System.Linq; using System. ...
- 2018.8.14-C++复习笔记总
2018.8.14-C++复习笔记总 // CPPTEST.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iost ...
- ospf序列号等问题
OSPF使用的是顺序序列号,不是循环的,范围是0X80000000到0X7FFFFFFF 第一个8是负的,第一个LSA的序列号是0X80000001,然后累加到0,在从0到0X7FFFFFFF 如果真 ...
- 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 ...
- LightOJ 1269 Consecutive Sum (Trie树)
Jan's LightOJ :: Problem 1269 - Consecutive Sum 题意是,求给定序列的中,子序列最大最小的抑或和. 做法就是用一棵Trie树,记录数的每一位是0还是1.查 ...
- Math.abs为Integer.Min_VALUE返回错误的值
Math.abs为Integer.Min_VALUE返回错误的值 这段代码: System.out.println(Math.abs(Integer.MIN_VALUE)); 回报-2147483 ...
最新文章
- 2022-2028年中国氟硅橡胶产业发展动态及投资前景分析报告
- 李彦宏候选中国工程院院士
- centos7 ambari2.6.1.5+hdp2.6.4.0 大数据集群安装部署
- python2版本和python3版本-python2和python3哪个版本新
- wxWidgets:wxGridUpdateLocker类用法
- 牛客练习赛44 B	小y的线段 (思维)
- postman数据保存在哪里_Postman 历史记录导出的解决方案
- OSI七层模型都是什么?
- 60-320-040-使用-去重-HyperLogLog 去重计数
- 谈软件测试人员定位---三年软件测试总结
- 读取和写入文件的最简单方法
- sitemesh应用
- vue富文本编辑器wangeditor必填判断
- excel批量删除密码解除密码保护 可多个密码
- 互联网晚报 | 06月08日 星期三 | ​教育部回应高考试题疑泄露;​上海落户新规;字节跳动考虑出售得物少数股份...
- TensorFlow中的通信机制——Rendezvous(一)本地传输
- x86服务器是32位系统嘛,x86是什么意思?x86是32位还是64位?
- SUPER-VLAN
- linux美学设计,扁平化设计美学探讨
- docker搭建minio
热门文章
- 扩散模型diffusion model用于图像恢复任务详细原理 (去雨,去雾等皆可),附实现代码
- 利用FFmpeg实现录屏、直播推流、音频视频格式转换、剪裁等功能
- C#虚方法详解(一切尽有,建议收藏!!!)
- 京东白条抢滩消费信贷 赔钱抢市场
- 判断平面上两直线相交
- tensorflow与keras
- el-popover在列表里循环使用,关闭不了????
- 怎样正确选择电动机的功率?
- 学习杂记(如何让两个div在同一行)
- python lncrna_一种基于序列组成,结构信息及理化特征的lncRNA鉴定方法与流程