byte类型的数在JAVA中占1个字节,也就是8位,那么8位中除去一个符号位,表示数值的共有七位。
例如:1000 0000 中1就是符号位,表示负数。
0111 1111 中0也是符号位,表示正数。
剩余7位表示数值,根据二进制的计算方法,byte8位一共可以表示-128~127。
为什么正数只能表示到127,而负数可以表示到-128呢?
这涉及到了0的问题
1000 0000 按照之前的规定来看,首位1代表符号位,说明是负数,后7位代表数值0。这样看来,1000 0000就代表了-0这个数。
0000 0000 同理,按照之前的规定来看,首位0代表符号位,说明是负数,后7位代表数值0。这样看来,1000 0000就代表了+0这个数,0这个数是不需要使用2种正负去表示的,+0和-0这样就浪费了一个表示数值。所以规定1000 0000代表-128,第一位不止是符号位了,或者说,规定1000 0000就是-128,这样就导致了我们可以表示-128~127的数,正数比负数可以表示的数少一,就少在了这个-0上。
再说溢出问题

        byte a = 127;byte b = -128;(byte)(a+1);(byte)(b-1);

这样就出现了一个问题,也就是溢出问题,因为byte只能表示8位,数值就是-128~127,现在127+1和-128-1都导致超出了byte所能表示的范围,那么就代表数据溢出了。
现在需要大家明白一个问题就是,计算机中,是使用补码进行运算的,正数的补码和原码还有反码都一样。但是负数就不一样。补码是源码取反+1.同理原码是补码取反+1.
明白了以上这个概念,我们就可以继续往下走了。
127是正数,所以表示为0111 1111.
127 + 1 = 128 表示位 1000 0000.
你可以发现现在符号值变成了1,从0变成1.那么现在在系统中就是表示为一个负数,我们可以发现这个数1000 0000和之前我们规定的-128的值是一样的,对127+1现在就转化成了-128.
同理-128是1000 0000,我们对它进行减一,那么就是-129 转化成二进制就是 11000 0001而在计算时需要转化成补码也就是 原码取反10111 1110 再+1 10111 1111,而我们byte只能放下8位,所以原本的符号位顶掉了,所以值就变为0111 1111,也就是127.这就是byte的溢出问题。

二进制加减溢出问题详解,byte类型加减溢出详解。相关推荐

  1. 数据库两时间类型相减_sql中两个时间类型相减得到的值

    今天有人把数据库两个time类型的字段查出来并做了减法,得到一个长形的数字.这个数字是什么? 首先在数据库里建立一张test表(mysql的数据库) CREATE TABLE `NewTable` ( ...

  2. byte java byte_详解java中的byte类型

    Java中整数类型有:byte占8位, short 占16位, int占32位, long占64位 Java也提供了一个byte数据类型,并且是基本类型中的整数类型.java byte是作为最小的数字 ...

  3. byte java 详解_详解java中的byte类型

    Java也提供了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理的,因此它的值域被定义为-128~127,也就是signed byte.下面这篇文章主要给大家介绍了关于j ...

  4. Java中的byte类型是有符号的吗_JAVA中byte类型的介绍。 谢谢

    展开全部 Java也提供62616964757a686964616fe59b9ee7ad9431333431366265了一个byte数据类型,并且是基本类型.java byte是做为最小的数字来处理 ...

  5. 中yeti不能加载_第二十章_类的加载过程详解

    类的加载过程详解 概述 在 Java 中数据类型分为基本数据类型和引用数据类型.基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载 按照 Java 虚拟机规范,从 Class 文件到加载到内 ...

  6. python中减法运算函数_OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减...

    OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减 OpenCV-Python图像的减法运算cv2.subtract函数详解以及和矩阵减法的差异对比 ? ? 前往老猿 ...

  7. android系统加载主题的流程,详解Android布局加载流程源码

    一.首先看布局层次 看这么几张图 我们会发现DecorView里面包裹的内容可能会随着不同的情况而变化,但是在Decor之前的层次关系都是固定的.即Activity包裹PhoneWindow,Phon ...

  8. render注册一个链接组件_详解vue 动态加载并注册组件且通过 render动态创建该组件...

    基于 iview Tabs 组件实现 功能:为每个 tab 动态创建不同的.特定的组件内容,而不需要大量的 import 组件并进行 component 注册 Index.vue import loa ...

  9. Java的byte类型详解

    前言 byte这个单词是Java八种基本数据类型之一字节的关键字,在计算机存储中以字节为单位,8位比特(bit)组成一个字节. 为什么弄清楚byte这么重要呢?因为智能硬件的数据传输大部分协议都是按字 ...

最新文章

  1. git撤消所有未提交或未保存的更改
  2. git cherry-pick 使用指南
  3. android表情输入键盘,GitHub - UKfire/Emotion: 帮你的Android应用快速集成表情键盘
  4. Spring MVC 常用Jar包官方下载地址(官方Maven仓库)
  5. Head first java chapter 16 集合与泛型(数据结构)
  6. Spring5参考指南:容器扩展
  7. windows进入mysql
  8. 南昌大学计算机接收调剂的条件,关于2018年河南昌大学学硕士研究生接收调剂程序及要求的须知详情...
  9. Java通过BCrypt加密
  10. 吸尘器上亚马逊要求UL1017测试报告怎么办
  11. vhdl入门6分频器
  12. 二、逻辑回归LR面试题总结
  13. 【腾讯地图】出现“鉴权失败,请传入正确的key”怎么解决?
  14. Mac OS X磁盘重新分区后 BootCamp Windows启动项丢失
  15. 合作式智能运输系统通信架构
  16. Grub4dos安装和启动完全指南
  17. 服务器私有信息,私有服务器
  18. iOS:编译问题Presenting view controllers on detached view controllers is discouraged
  19. 华为云,奔跑的感觉爽吗?
  20. java linux解压_在LINUX下 用JAVA如何解压rar文件

热门文章

  1. 一切为了用户体验——戴尔在Computex 2014上更新全系列电脑
  2. 《时代的变换》:现象、网络和时代变换的动力
  3. 机器学习17 -- GAN 生成对抗网络
  4. vscode更改edge浏览器
  5. 【科研利器】Zotero 配合 ipad,读文献效率翻倍!
  6. 清理服务器物理内存,服务器怎么清理物理内存
  7. java 正则表达式 单引号_关于Java:用Regex替换单引号和双引号
  8. 银行业务管理软件 (1)
  9. 算法竞赛入门【码蹄集新手村600题】(MT1151-1200)
  10. web3.0赋能人的灵魂~