我们都知道byte的取值范围是-128到127。但是我如果定义一个变量,值为129,强转成byte的情况下,会输出什么?

如图所示,是-127?!其实在我们java中负数是以补码的形式表示的。那么到这里我们就先复习一下子原码 反码 补码。

正数的原码 反码  补码都是一样的。负数的反码是原码除第一位符号位之外,其余位取反,即1变0,0变1。补码就是反码+1。我们直接看上面这题吧。

由于byte只有1个字节。8位。所以129的原码就是1000 0001。它的第一位是1即负数,所以我们应该用补码的形式来表示它。所以它的反码会是1111 1110  补码就是1111 1111换算成10进制的话就是-127。我们可以多练习几道,如果是 byte(131)呢? 131的原码是1000 0011,反码是1111 1100,补码就是1111 1101。所以换算成10进制就是-125。我们如果是byte(-131)呢?道理一样,在我们算出来的结果上加个负号就行。就是-(-125),即125。

还有第二种方法理解这个值越界。

我们可以把byte的取值范围想象成一个圈。即首尾相连,如图:

意思就是当我们走到127时,再往前+1就到了-128,就像是一个循环。这样子我们就可以很快的得出答案来如byte b = (byte)134。 按照这个方法,134 = 128 + 6,即答案应该是等于-121。

然后还有这个不止是byte噢,其他类型的整形数一样适应。

好啦,今天的小复习就到这里了,如有不足,还请各位大佬指出。

java中byte(129)= -127?分析相关推荐

  1. 探究Java中byte数据类型范围为何是(-128到127)

    文章目录 Java中byte数据类型范围为何是(-128到127) 知识要点 关键词解析 8位 符号位 Java中byte数据类型范围为何是(-128到127) 知识要点 byte在java中转为二进 ...

  2. Java中byte[]与十六进制之间的转化

    Java中byte是占8位二进制,十六进制的数是用4位二进制来表示的.因此当byte转十六进制时,将byte的8位二进制,分为高4位和低4位并分别转化为相应的十六进制,再合到一起即可.当十六进制转by ...

  3. java byte 正数最大_关于JAVA中Byte类型的取值范围的推论(*零为正数,-128在计算机中的表示方法...)...

    先看一段推理 +124:0111 1100 -124:1000 0100 +125:0111 1101 -125:1000 0011 +126:0111 1110 -126:1000 0010 +12 ...

  4. Java中byte类型的范围

    Java中为什么byte的范围是 -128~127 在java中byte类型占8位 表示的范围是0000 0000 ~ 1111 1111 总共256个数, java中byte类型有正负,最高位表示正 ...

  5. Java中byte与16进制字符串的互相转换

    https://www.cnblogs.com/qinwangchen/p/5418028.html * Convert byte[] to hex string.这里我们可以将byte转换成int, ...

  6. Java中 byte[]数组序列化和fastjson序列化区别

    Java中 byte[]数组序列化和fastjson序列化区别 Java中,对于对象可以通过序列化成byte数组或者序列化成json形式,这里做下两者的对比. 首先看下实现方式: 1 byte数组序列 ...

  7. java byte(字节_【原创】Java中Byte字节流处理的自定义方法库2

    1.把整型转换成指定长度的数组字节流 public static byte[] int2bytes(int integer, int len) { //   if (integer < 0) { ...

  8. java整型转换为数组_基于java中byte数组与int类型的转换(两种方法)

    java中byte数组与int类型的转换,在网络编程中这个算法是最基本的算法,我们都知道,在socket传输中,发送.者接收的数据都是 byte数组,但是int类型是4个byte组成的,如何把一个整形 ...

  9. java乱码详解(java中byte与char的转换)

    转自:http://hi.baidu.com/%C6%F3%D2%B5%BC%D2%D4%B0/blog/item/825a4858d6248e8b810a181a.html   java byte与 ...

  10. java数组释放内存空间,Java中数组的内存分析

    正文 引言: 墨白在文末给大家准备了程序员的适用壁纸,需要的小伙伴自取,今天的内容是给大家聊聊Java中数组的内存分析和原理,很多朋友可能已经忘记了,毕竟这是非常基础的点了,这次算是给大家复习了吧! ...

最新文章

  1. C++中Reference与指针(Pointer)的使用对比
  2. virtualBox NAT模式,设置虚拟机可上网,宿主机可访问虚拟机的方法
  3. DX使用随记--ImageComboBoxEdit
  4. 【Caffe实践】 添加自己的网络层
  5. 事务,Oracle,MySQL及Spring事务隔离级别
  6. linux工程师前景_linux运维工程师前景怎样 就业薪资待遇高吗
  7. iptables命令_程序员最有用的linux命令汇总
  8. 滴滴笔试准备 项目分配利益最大化
  9. qt中设置父窗口中某一控件样式后,子窗口中某一控件也随父控件样式
  10. leetcode链表题
  11. matlab判断传递函数的稳定性,基于Matlab的控制系统稳定性判定.pdf
  12. Android源码提取系统签名
  13. 绕过卡巴斯基dump进程lsass.exe内存
  14. 腾讯、阿里、京东…互联网大厂2022新年礼盒长啥样?我酸了
  15. Java实现蓝桥杯快乐数
  16. June 12th No Matter How
  17. 99%网赚精准引流技巧!
  18. 《1024伐木累》-小白篇之开发网站,三天!(中篇-1)-总章节十
  19. 这可能是全网最详细的 Python 安装教程(windows)
  20. 【Python】Scrapy完成电影信息爬取并存入数据库

热门文章

  1. 解决WIn7无线网图标显示不正确的问题
  2. Radarsat-2全极化SAR数据C3和T3矩阵的提取———PolSARpro
  3. Delegate.Combine
  4. 通过Webhook接入钉钉群自定义机器人
  5. Wine Reviews(葡萄酒评论相关数据集)
  6. 《21天学通C#》将写的代码原封不动的在控制台显示
  7. 计算机专业國際排名,美国普林斯顿大学计算机专业排名
  8. Linux下的截图工具 —— Flameshot
  9. Java多线程编程之读写锁【ReentrantReadWriteLock】
  10. 算法—快排(python)