VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Java教程 >
  • Integer源码中的MIN_VALUE = 0x80000000和MAX_VALUE = 0x7fffffff的分析

1.计算机的常识

(1)总所周知,计算机最底层存储的二进制数值是以补码形式存在的,这是了实现两个数的减法而设计的。

(2)举个小例子去理解补码,两个四位二进制之间的加减运算

  0010(2) + 0001(1) = 0011(3)

  0010(2) - 0001(1) = 0001(1)(现实中的运算)

    如果是这样运算时可以不用补码的,但是事实上计算机没有减法运算器,或者说减法运算器太复杂了,总而言之就是没有减法运算器。

  那么,减法只能用一个负数来代替了。于是有了符号位,第一位便是符号位。

  下面有几种概念:   

原码是最简单的机器数表示法。用最高位表示符号位,‘1’表示负号,‘0’表示正号。其他位存放该数的二进制的绝对值。

反码:正数的反码还是等于原码负数的反码就是他的原码除符号位外,按位取反。

补码:正数的补码等于他的原码负数的补码等于反码+1。(这只是一种算补码的方式,多数书对于补码就是这句话)

 

 

 

 在这里我们可以不用看反码,直接看补码。

2.Integer源码中的MIN_VALUE = 0x80000000和MAX_VALUE = 0x7fffffff的分析

   Integer是Java中的包装类,占4字节。一共4*8=32位,由8个16进制组成。如上图所示,最小值为-8即1000,最大值为0111即0111。然后,最小值在1000全部补0即为80000000,最大值在0111后面全部补1即为7fffffff。

 

仅供参考,有错误还请指出!

有什么想法,评论区留言,互相指教指教。

觉得不错的可以点一下右边的推荐哟

蓝天和白云是标配。
https://www.cnblogs.com/linzm14/p/14405847.html
原文:

相关教程