很多刚学习JAVA的童鞋不明白为什么int型有时候强转为byte时会变为负数。这是因为不明白JAVA中数值的表示机制。JAVA中规定用二进制补码的方式表示一个负数。有了上面的概念之后我们就知道为什么高精度转换低精度类型时有时会变成负数。比如 int 232转为byte时值 变为-24转换过程如下:2...
分类:
编程语言 时间:
2015-06-27 21:23:10
阅读次数:
152
补码用来解决整数的存储问题,整数在计算机中是以二进制的补码形式进行存储的,求十进制对应的二进制补码1求正整数的二进制补码:正整数的二进制补码与其二进制原码相同,2:求负整数的二进制补码:先求与该负数相对应的正整数的二进制代码,然后所有位取反加1,不够位数时左边补1,例如,求-3的二进制补码,先求3的...
分类:
其他好文 时间:
2015-05-23 11:10:21
阅读次数:
119
文章来源背景大家都知道计算机内部采用补码表示整数的,但是具体到补码的内在含义,很多人不能理解,故我们分享自己的理解。首先说下补码的定义以及基本性质:
1) 正数的补码和原码相同;
2) 负数的补码等于取反后加1;
3) 0的正负两种补码相同;
4) 对一个补码再求补码等于自己;
5) 一个正数的原码和其对应的负数的补码相加等于模;针对本文,我们其实只关心规则1)和2)即可。实例为...
分类:
其他好文 时间:
2015-04-12 10:38:20
阅读次数:
127
1.程序员和编译器不能用表达式(x-y<0)来替代(x<y),因为前者可能会产生溢出。甚至于也不能用表达式(-y<--x)来替代,因为在二进制补码表示中负数和正数的范围是不对称的。算术溢出是造成程序错误和安全漏洞的一个常见根源。...
分类:
其他好文 时间:
2015-03-30 13:24:49
阅读次数:
106
二进制补码:1、计算机系统的内部以二进制形式存储数据。2、在Java程序中输入的十进制的数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。二进制补码的原理:正数+负数=模。模:某种类型数据的总数,例如:4位二进制数的模是2^4=168位二进制数的模是2^8=25...
分类:
编程语言 时间:
2015-03-21 12:29:08
阅读次数:
169
一、BigInteger如果在操作的时候一个整型数据已经超过了整数的最大类型长度long的话,则此数据就无法装入,所以,此时要使用BigInteger类进行操作。不可变的任意精度的整数。所有操作中,都以二进制补码形式表示 BigInteger(如 Java 的基本整数类型)。BigInteger 提...
分类:
编程语言 时间:
2015-02-26 22:49:58
阅读次数:
330
转:http://www.ruanyifeng.com/blog/2009/08/twos_complement.html问一个主要的问题。负数在计算机中怎样表示?举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢?非常easy想到,能够将一个二进制位(bit)专门规定为符号位,它等...
分类:
其他好文 时间:
2015-01-23 21:24:12
阅读次数:
166
六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。byte:byte数据类型是8位、有符号的,以二进制补码表示的整数;最小值是-128(-2^7);最大值是127(2^7-1);默认值是0;byte类型用在大型数组中节约空间,主要代替整数,因为byte变量占用的空间只有int类型...
分类:
其他好文 时间:
2015-01-15 21:44:56
阅读次数:
130
学习移位运算,首先得知道参与移位运算的类型的位数,那先来复习下Java基础类型的占位数吧。Java基础类型Java基础类型总结一览表类型二进制位数最大值最小值初始化值表示形式带符号char8127(2^7-1)-128(-2^7)0二进制补码是short1632767(2^15 - 1)-32768...
分类:
编程语言 时间:
2014-12-02 13:23:25
阅读次数:
181
对于程序猿或者是其它搞计算机类的人员,这篇只是为了解释一下原码,反码,补码之间的计算和解释上一篇的a+~a=-1的问题!!!首先先介绍一下整数在计算机中表示方法,数在计算机中都是用二进制表示,但是字节长度就不一定了,不同的机器可能就不一样而且在计算机系统中,补..
分类:
其他好文 时间:
2014-10-30 02:10:43
阅读次数:
308