美文网首页
java的byte取值范围

java的byte取值范围

作者: 小飞的大梦想 | 来源:发表于2019-07-29 16:37 被阅读0次
  • byte(字节)在计算机内存中占8bit(位),每一位都是二进制0或者1
  • 计算机为了区别数字的正负决定将第一位也就是最高位来标识,0位正,1为负

所以最大的正数为01111111,转换为十进制即+127

值得注意的是计算机中的负数都是以补码形式存在的,所以11111111并不是最大的负数,因为它的原码为10000001,对应-1,是最大的负数
正数的原码,反码,补码都相同

补码是将原码先取反,在加1得到的,例如10010010,先取反为(符号位不变) 11101101,再加一得到11101110

为什么会有补码

1、原码是我们人脑最容易理解的,那我们计算(+1) + (-1) = 00000001(原) + 10000001(原) = 10000010
而10000010代表的应该是(-2),显然与我们的预期(+1) + (-1) = 0 不符,于是人们想出了另一种方法,用反码表示负数

2、反码(除符号位全部取反),那么我们计算(+1) + (-1) = 00000001(反) + 11111110(反) = 11111111(反) = 10000000(原) = (-0),虽然在我们认为 +0,-0 代表的是一样的,但人们为了追求完美,又发明了补码。

3、补码(反码加一),那么我们计算(+1) + (-1) = 00000001(补) + 11111111(补) = 100000000(保留8位为00000000) = 0,正好与原来的00000000相等,解决了 +0 和 -0的问题,那么多出来的 10000000还可以代表-128

相关文章

  • Java字节码与Python字节码互转

    Java 字节(Byte) 取值范围 [-128,127]Python3 字节(bytes) 取值范围: [0,2...

  • java的byte取值范围

    byte(字节)在计算机内存中占8bit(位),每一位都是二进制0或者1 计算机为了区别数字的正负决定将第一位也就...

  • 2019-08-28/byte字节数组相关操作

    写一些根java中的byte操作相关的吧。在java中byte占据一个字节,byte类型的取值范围是[-128, ...

  • Java 中Byte 的取值范围

    基础概念一 位(bit) bit 表示二进制位,位是计算机内部数据存储最小单位,11010100是一个8位二进制数...

  • Int强转字节遇到的问题

    我们都知道,Java中有8种基本数据类型,每种类型都有取值范围,比如1字节的byte取值范围是[-128~127]...

  • 原始数据类型 & String & java.lang.Numb

    在Java Doc中说明Java包含八种原始数据类型: byte (B)1字节,取值范围:-28 ~ 28...

  • java中byte类型取值范围(转)

    机器值: 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符...

  • Kotlin基础

    本篇文字主要记录Kotlin的基本知识及与Java对比所不同之处。 1、基础变量类型及取值范围 Byte ...

  • java基础篇:java基本数据类型

    1:java几种基本类型大小 关键字类型位数 (8位一字节)取值范围(表示范围)byte整型8-2^7 ~ 2^...

  • java数据类型

    基本类型 byte:Java中最小的数据类型,在内存中占8位(bit),即1个字节,取值范围-128~127,默认...

网友评论

      本文标题:java的byte取值范围

      本文链接:https://www.haomeiwen.com/subject/xxvbrctx.html