做网站要懂哪些杭州工程网站建设
做网站要懂哪些,杭州工程网站建设,wordpress图片打水印,电商推广方案前言大家应该都知道#xff0c;整数包括负数#xff0c;零#xff0c;和正数。在Java中#xff0c;基本类型中byte(8位)、short(16位)、int(32位)、long(64位)属于整数#xff0c;并且没有无符号数#xff0c;均是有符号的。对于计算机来说#xff0c;它只认识二进制整数包括负数零和正数。在Java中基本类型中byte(8位)、short(16位)、int(32位)、long(64位)属于整数并且没有无符号数均是有符号的。对于计算机来说它只认识二进制也就是0和1那我们开发过程中所使用的整数(大多是10进制)在计算机中是怎么存储成二进制的呢本文将详细解读Java整数在计算机中的存储原理。整数的编码方式整数的编码分为原码、反码和补码。计算机使用的是补码的存储方式。它们的定义如下原码在数值前面增加了一位符号位(即最高位为符号位)该位为0表示正数该位为1表示负数其余位表示数值的大小。反码正数的反码与其原码相同。负数的反码是对其原码逐位取反但符号位除外。补码正数的补码与其原码相同负数的补码就是对该负数的反码加1。因为计算机是以补码来存储整数的所以补码就显得很重要。那么如何计算整数的补码呢下面以具体例子来说明。100 - 原码/反码/补码011001000 - 原码/反码/补码00000000-100 - 原码11100100 - 绝对值01100100 - 取反加1100110111 - 补码100111001 - 原原码/反码/补码00000001-1 - 原码10000001 - 绝对值00000001 - 取反加1111111101 - 补码11111111127 - 原码/反码/补码01111111-128 - 绝对值10000000 - 取反加1011111111 - 补码10000000从定义可以看出正数的补码反码原码相同。0的补码就是本身。那么负数的原码和补码如何转换呢已知一个负数求补码方法绝对值原码按位求反加1。已知负数补码求负数方法符号位不变其他位按位求反加1。有了原码为什么还要用补码来存储整数下面我们以基本类型byte为例来说明这个问题因为byte是8bit,从理论上讲如果利用充分的话那么它应该可以表示2^8256个数值。如果采用原码来存储1 - 1 1 ( -1 ) (00000001) (10000001) (10000010) -2 这显然是不正确的。原码在两个整数的加法运算中是没有问题的问题出现在带符号位的负数身上。原码无法满足运算要求。如果采用反码来存储反码的取值空间和原码相同且一一对应。所以反码的表示范围位-127到-0到0到127共255个数值这里我们把0和-0都当成0对待。下面是反码的减法运算1 - 1 1 ( -1 ) (00000001) (11111110) (11111111) ( -0 ) 没问题。1 – 2 1 ( -2 ) (00000001) (11111101) (11111110) ( -1 ) 正确。反码的问题出现在(0 : 00000000)和(-0 : 11111111)上因为在人们的计算概念中零是没有正负之分的。如果采用补码来存储 1 - 1 1 (-1) (00000001) (11111111) (00000000) 0 正确。 1 – 2 1 (-2) (00000001) (11111110) (11111111) ( -1 ) 正确。00000000 表示010000000(0的反码01111111加上1) 表示 -128通过补码的运算可以看出补码的设计目的是使符号位能与有效值部分一起参加运算从而简化运算规则。使减法运算转换为加法运算进一步简化计算机中运算器的线路设计。此外在补码中用-128(10000000)代替了-0所以没有0和-0之分符合常理所以补码的表示范围为 -128到127共256个。补码刚好是充分利用了byte的8bit空间。结语本文详细解读了Java整数(包括正数和负数)在计算机中的存储原理并且以byte基本数据类型为例阐述了采用补码的形式存储数值的好处希望大家看完本篇后能够弄清楚整数在计算机中的存储原理。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/89749.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!