计算机中,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

int类型转换byte类型的更多相关文章

  1. 013、Java中int类型转换byte

    01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...

  2. int类型和byte类型的强制类型转换

    今天在读<Java网络编程>这本书的第二章 流 时,看到书中有一个地方关于int强制转换为byte类型时应注意的地方.这个地方有点细节,不过就应该把这种细节把握住. 情况是这样的,讲到In ...

  3. int类型被强制转换成较低精度的byte类型

    公司的项目上线之前会进行代码合规性检查,其中很容易违反的一个规则就是“不要把原始类型转换成较低的精度”,实际开发的过程中,很多方法在处理数据时,尤其在做移位操作的时候,难免要把int类型转换成byte ...

  4. Java 基础类型转换byte数组, byte数组转换基础类型

    Java 基础类型转换byte数组, byte数组转换基础类型 Java类型转换 java类对象转化为byte数组

  5. java里int类型转byte类型

    今天在做书上的一个例子的时候, 要使用byte类型,首先我很直接的就写到了byte b = 0XAA, 结果报错, 说从int转换到byte可能会有损失. 我当时就很奇怪, 为什么会出现这种情况呢? ...

  6. C#/C++ 中字节数组与int类型转换

    1.C#中int和byte[]转换: /// <summary> /// 把int32类型的数据转存到4个字节的byte数组中 /// </summary> /// <p ...

  7. int与byte的区别

    Java中涉及byte.short和char类型的运算操作首先会把这些值转换为int类型,然后对int类型值进行运算,最后得到int类型的结果.因此,如果把两个byte类型值相加,最后会得到一个int ...

  8. 计算机基础--Java中int char byte的关系

    计算机基础--Java中int char byte的关系 重要:一个汉字占用2byte,Java中用char(0-65535 Unicode16)型字符来存字(直接打印输出的话是字而非数字),当然要用 ...

  9. 对于char,short和byte类型的运算

    对于char,short和byte这些类型在计算时都会提升到int型来计算,所以a+b=3(这个3是int型的,所以我们需要将它强转成为byte类型,才不会出错.但是使用 += 或者 ++ 运算符可以 ...

随机推荐

  1. Zookeeper数据存储总结

    Zookeeper快照文件和事物操作文件以文件的形式存储在硬盘上,以快照文件为主,日志文件为辅.因为当对内存数据进行变更的时候,会保证将事务操作记入log日志,而snapshot只是内存某一个时刻影像 ...

  2. python Udp与Tcp

    一.UDP 首先导入socket 1.客户端 1.创建套接字(socket)udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)2 ...

  3. mysql编写存储过程(2)

    书接上回. 实例8:if-then -else语句 实例9:case语句: 实例10:循环语句,while ···· end while: 实例11:循环语句,repeat···· end repea ...

  4. OpenCV --- 修改图像的对比度、亮度 、RGB转Gray图像、修改图像的尺寸

    #include <opencv2/core.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/highgu ...

  5. ActiveMQ学习--002--Topic消息例子程序

    一.非持久的Topic消息示例 注意 此种方式消费者只能接收到 消费者启动之后,发送者发送的消息. 发送者 package com.lhy.mq.helloworld; import java.uti ...

  6. Amazon S3 功能介绍

    一 .Amazon S3介绍 Amazon Simple Storage Service (Amazon S3) 是一种对象存储,它具有简单的 Web 服务接口,可用于在 Web 上的任何位置存储和检 ...

  7. WINDOWS 下 修改APACHE 并发数

    某次,配置大型站点.日IP过2W. 刚解析完,就特别卡,每个页面都是慢吞吞的打开的. 至少30秒.但是,3389进入服务器很快,CPU 内存都是几乎为0. 想到WINDOWS下使用的是APACHE,并 ...

  8. MYSQL 中的日期操作(不包含跨年问题)

    先从一个简单的SQL说起 当前week的第一天:select date_sub(curdate(),INTERVAL WEEKDAY(curdate()) + 1 DAY): DATE_SUB() 函 ...

  9. CentOS6.5下Ambari安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)

    第一步: Ambari安装之Ambari安装前准备(CentOS6.5)(一) 第二步: Ambari安装之部署本地库(镜像服务器)(二) 第三步: Ambari安装之安装并配置Ambari-serv ...

  10. C/C++ -- Gui编程 -- Qt库的使用 -- Qt窗体的类型状态布局

    -----工程WindowTest----- 1.-----窗体类型type.cpp----- #include <QtGui> int main(int argc, char * arg ...