byte溢出问题

byte类型占内存8个字节,取值范围是-128~127
当byte类型超过127时就会出现内存溢出情况,举个栗子:

//输出的value应该为多少,不妨自己算一下
byte value = 120;
value += 12;
System.out.println(value);

这其中涉及到负数再内存中的存储:
二进制表示数值时, 他的最后一位并不参与数值的存储, 而仅仅用来表示符号(+或 -)即 正 ,反。
存储负数时,计算机会按照 原码>反码>补码顺序转化后存储(负数=正数取反+1)。

好那么我们开始运算
我们都喜欢十进制的运算,所以不妨先进行十进制的加减
120+12=132
如果是int型,十进制对应二进制如下表

十进制 二进制
120 0111 1000
12 0000 1100
132 1000 0100

但是1000 0100对应的byte需要按照负数存储进行逆推一下
-1操作
1000 0011
取操作(取反时符号位不用管)
1111 1100
因为第一位是符号位,1表示是负数,对数值没有印象
只看数值部分就是0111 1100,对应十进制为124。由此可以得出内存中的1000 0011 表示的是-124。
另外
为了方便记忆,其实在负数源码到转化成内存中的二进制相互转化都可用:取反,+1来做。
1000 0100
取反:1111 1011
+1 : 1111 1100
首位1看成符号位,转化成10进制依然是-124.

综上:程序输出应该为:-124。

关于byte溢出问题相关推荐

  1. java高位转低位注意事项,int转 short/byte溢出过程

    对上述代码的输出结果有没有人觉得是89呢,现实中看见不少直接使用java保留字进行强制高位转低位的. 上述代码输出结果是21. 我们都只知道int类型占用的是32位,4字节,byte类型是占用一字节共 ...

  2. Libc堆管理机制及漏洞利用技术 (一)

    0×01 Libc堆浅析 1.1 堆管理结构 struct malloc_state {mutex_t mutex; /* Serialize access. */int flags; /* Flag ...

  3. TM4C123G学习记录(6)--UART

    因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 为了准备电赛临时学一下TM4C123G,简单记录学习内容 大家可以 ...

  4. Libc堆管理机制及漏洞利用技术(一)

    原文地址:https://www.freebuf.com/articles/system/91527.html 原创作者:ysyy 前段时间参加了个名为RCTF的比赛,没进入决赛.正所谓知耻而后勇,作 ...

  5. 二进制加减溢出问题详解,byte类型加减溢出详解。

    byte类型的数在JAVA中占1个字节,也就是8位,那么8位中除去一个符号位,表示数值的共有七位. 例如:1000 0000 中1就是符号位,表示负数. 0111 1111 中0也是符号位,表示正数. ...

  6. java 处理byte_java - 文件到Java中的byte [] - 堆栈内存溢出

    ===============>>#1 票数:1222 例: import java.io.File; import java.nio.file.Files; File file; // ...

  7. byte转化为Bitmap,防止内存溢出

    Java代码 ByteArrayInputStream is =new ByteArrayInputStream(byte[]); BitmapFactory.Options options=new  ...

  8. JVM内存溢出的几种情形

    1.堆溢出 原因:大量对象占据了堆空间,而这些对象都有强引用导致无法回收,当对象大小之和>Xmx参数指定的堆大小时导致溢出! List<byte[]> list = new Arra ...

  9. Java内存溢出的详细解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 一.内存溢出类型 1.java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的 ...

最新文章

  1. php html 文本域,html文本域标签属性有哪些?html文本域标签属性用法介绍
  2. SQL Server 2008 性能测试和调优
  3. [No0000111]java9环境变量配置bat
  4. ad中电源插座怎么封装_您可以在房屋中安装的各种电源插座
  5. hive的row_number()、rank()和dense_rank()的区别以及具体使用
  6. [Leedcode][JAVA][第76题][最小覆盖子串]滑动窗口]
  7. Ajax--serialize应用表单数据序列化
  8. html表单所有类型,表单form的type种类
  9. [TimLinux] JavaScript AJAX接收到的数据转换为JSON格式
  10. 搞搞Linux命令--grep
  11. 包含的前缀数目超过了最大值。最大值为 2_「西法带你学算法」一次搞定前缀和...
  12. linux下执行efi文件,在Linux下创建EFI BIOS Grub加载分区
  13. 知识变现海哥:如何利用自己的时间和知识获得财富自由
  14. Latex \TexStudio 设置数学符号
  15. 数学——Lipschitz连续
  16. 蓝桥杯:历年试题PREV-55—小计算器
  17. Spring框架知识
  18. 巴黎时装周儿童单元深圳站代言人伊朵,精彩演绎儿童时装
  19. 研发流程及各阶段任务
  20. 如何查看网卡驱动的型号

热门文章

  1. 2015年百度之星程序设计大赛 - 资格赛 (1004放盘子)
  2. python创建一个集合类型的方法是_【Python基础】一文理解Python集合,17个方法全解,看完就够了...
  3. solarwinds安装升级NPM和其他Orion平台产品
  4. BOSH和dSPACE的企业价值观
  5. html背景音乐停止按钮显示,JS 一个按钮控制网页背景音乐的开始暂停
  6. 中星睿典职称计算机考试,大纲教材 - 中星睿典 - 全国职称计算机考试|职称计算机考试模块|全国职称计算机考试试题...
  7. 关于硬盘模式为achi和ide的差别
  8. 什么是真正的云原生?
  9. 【翻译】MOA - Massive Online Analysis, a Framework for Stream Classification and Clustering
  10. linux中运行c找不到conio.h,linux中无 conio.h的解决办法