美文网首页
java中byte类型

java中byte类型

作者: MsMu | 来源:发表于2017-09-26 22:57 被阅读0次

    在计算机中数据都是以二进制原码的形式存在的,而数字间的运算都是以补码的形式进行。然而补码又分为正数的补码跟负数的补码;

    原码:

          1.数字的最原始二进制
    

    反码:

           1. 一个数如果是正,则它的反码与原码相同;
           2. 一个数如果是负,则符号位为1,其余各位是对原码取反;
    

    补码:

         1. 一个数如果为正,则它的补码跟原码相同
         2. 一个数如果是负,则它的补码为负数反码加1
    

    接下来要说的就是java中byte跟int之间的关系,1byte=8bit,1int=4byte=32bit,在java编程中经常要遇到的问题是byte跟int的转换:
    byte 占8位,取值范围是11111111~011111111 -128到127
    int 占32位。取值范围是 -2的31次方 到2的31次方

    int转byte则是取低8位丢弃后24位,并将取的结果作用于byte的取消范围内;

    byte转int则是以补位的形式补齐后24位形成一个32位的int,因为byte的取值范围有限,所以在byte表示的复数转为int自然随取值范围的扩散而扩散,即比如-128在byte中是11111111,转为int自然会转为-128在int的位置,所以byte转int,如果byte的数是复数,转int自然是复数,为了保证byte转int的数为正,那么就得将后24位舍弃(丢弃最高位符号位) &0xff

    相关文章

      网友评论

          本文标题:java中byte类型

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