package com.yygc.zhen.codeing_base; /** * @author zhen * @Date 2019/2/22 10:03 * 类型转换 */ public class TypeTrans { public static void main(String[] args) { byte bs = (byte)129; System.out.println(bs); int x = -0101; System.out.println(x); /** * 操作手法:…
计算机中,int类型占用4个字节,byte类型占用1个字节: 当int类型强转为byte类型时,计算机会截取最后的八位(1个字节): 由于计算机存储数据时,都是以补码的形式进行存储. 然而,我们通常看到的数却是计算机存储的补码先转换成反码,后转换成原码,再转换成十进制呈现的. 原码.反码与补码的关系: 正数:  原码  =  反码  = 补码 负数:  原码取反  = 反码(符号位不变):  反码  +  1  = 补码(符号位上的进位舍弃) 举例: int a = 128,转换成二进制形式是0…
作为一个java开发人员,接触的基本都是上层的,都是以应用为主,根据业务实现功能,但今天无意间发现了一个小问题,int类型的129转成byte类型变成了-127,我知道是因为位数截取的原因,但是还没有探究过为什么是-127.经了解后得以解惑. 首先要搞清楚的是计算机对数据的存储方式,在这里有两个概念大家要清楚: 1.反码:反码就是对一个二进制数据逐个取反 如1011010的反码就是0100101. 2.补码:补码很简单,就是在反码的基础上加1,比如上面的反码是0100101,那补码就是01001…
今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到InputStream的抽象方法read时,说到read返回一个int型,但实际是一个byte型的数据.这点从API也能考证.如图: 那么问题来了,int占4个字节,byte占1个字节,我们循环读取的时候将int型数组强制类型转换成byte时,会发生什么情况呢?代码如下: 1个字节占8位,既然实际返回的是byte…
今天在做书上的一个例子的时候, 要使用byte类型,首先我很直接的就写到了byte b = 0XAA, 结果报错, 说从int转换到byte可能会有损失. 我当时就很奇怪, 为什么会出现这种情况呢? 0XAA转化为10进制的byte类型就是-86, 并没有超出-128~127的范围.而且如果直接赋值byte b = -86 ; 也是正常通过. 经过网上一位前辈的教导, 现在有了这样的结论: 在计算机中是没有正负数的区分的, 所有的正负数都是人为规定的 byte类型的最小值-128二进制位1000…
参考:https://blog.csdn.net/qq_22771739/article/details/84496115 https://blog.csdn.net/boatalways/article/details/17027573 https://blog.csdn.net/zhiwen_a/article/details/81192087 Java的byte类型取值范围是-128~127为什么负数是128正数到127呢 首先需要了解原码反码和补码 正数的原码反码补码是一样的 [+2]=…
公司的项目上线之前会进行代码合规性检查,其中很容易违反的一个规则就是“不要把原始类型转换成较低的精度”,实际开发的过程中,很多方法在处理数据时,尤其在做移位操作的时候,难免要把int类型转换成byte类型,这时候就不可避免得出现原始类型转换成较低精度的情况,没有什么简便的方法,只能通过调用ByteArrayOutputStream,DataOutputStream 来处理.把处理过程封装到一个函数中.然后在进行类型转化的时候调用函数.处理函数如下: public byte intToButeAr…
Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte.下面这篇文章主要给大家介绍了关于java中byte类型的相关资料,需要的朋友可以参考下. 介绍 byte,即字节,由8位的二进制组成.在Java中,byte类型的数据是8位带符号的二进制数. 在计算机中,8位带符号二进制数的取值范围是[-128, 127],所以在Java中,byte类型的取值范围也是[-128, 127]. 取值范…
http://www.cnblogs.com/Robotke1/archive/2013/05/25/3099309.html ------------------------------------------------------------------------------------------------------------- Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signe…
例1: public class test { public static void main(String[] args) { byte a = 127 ; a = (byte)(a+3) ; System.out.println(a); } } 输出-126,为什么呢 byte类型的取值范围是-128-127 这个输出结果是由java编码方式决定的,Java中正数用原码表示,负数用补码表示,第一位是符号位. 对于127他的编码是: 0000 0000 0000 0000 0000 0000…