zoukankan      html  css  js  c++  java
  • int类型转换byte类型

    计算机中,int类型占用4个字节,byte类型占用1个字节;

    当int类型强转为byte类型时,计算机会截取最后的八位(1个字节);

    由于计算机存储数据时,都是以补码的形式进行存储。

    然而,我们通常看到的数却是计算机存储的补码先转换成反码,后转换成原码,再转换成十进制呈现的。

    原码、反码与补码的关系:

    正数:  原码  =  反码  = 补码

    负数:  原码取反  = 反码(符号位不变);  反码  +  1  = 补码(符号位上的进位舍弃)

    举例:

    int a = 128,转换成二进制形式是0000 0000 0000 0000 0000 0000 1000 0000,

    由于正数的原码=反码=补码,因此计算机存储的是0000 0000 0000 0000 0000 0000 1000 0000。

    int a = -128,转换成二进制形式是1000 0000 0000 0000 0000 0000 1000 0000,

    由于负数的原码、反码与补码的转换关系是:原码取反=反码(符号位不变),反码+1=补码;

    反码:1111 1111 1111 1111 1111 1111 0111 1111

    补码:1111 1111 1111 1111 1111 1111 1000 0000

    因此,在计算机中存储的是1111 1111 1111 1111 1111 1111 1000 0000

    int a = 128; 

    byte b = (byte) a; // b=-128

    首先,由上述第一个例子得知,128在计算机中存储的补码形式为0000 0000 0000 0000 0000 0000 1000 0000,

    此时强制转换成byte类型的数据时,计算机会自动截取最后的八位(1个字节)1000 0000,

    由补码最高位为1得知,转换后的数据是一个负数,

    根据负数补码求反码,我们可以得到该数的反码是1111 1111,

    根据负数反码求原码,可得到该数的原码是1000 0000

  • 相关阅读:
    Hacking Tools
    SDN 网络系统之 Mininet 与 API 详解
    Rust安装配置
    研华 FWA-3231 单路E3平台
    Netscaler Configuration Architecture
    TCP拥塞控制算法纵横谈-Illinois和YeAH
    TCP协议疑难杂症全景解析
    Windows WMIC命令使用详解(附实例)
    Windows一个文件夹下面最多可以放多少文件
    喝酒游戏,概率分布和卷积
  • 原文地址:https://www.cnblogs.com/happynewcoder/p/10167940.html
Copyright © 2011-2022 走看看