关于byte溢出问题
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溢出问题相关推荐
- java高位转低位注意事项,int转 short/byte溢出过程
对上述代码的输出结果有没有人觉得是89呢,现实中看见不少直接使用java保留字进行强制高位转低位的. 上述代码输出结果是21. 我们都只知道int类型占用的是32位,4字节,byte类型是占用一字节共 ...
- Libc堆管理机制及漏洞利用技术 (一)
0×01 Libc堆浅析 1.1 堆管理结构 struct malloc_state {mutex_t mutex; /* Serialize access. */int flags; /* Flag ...
- TM4C123G学习记录(6)--UART
因为想申请 CSDN 博客认证需要一定的粉丝量,而我写了五年博客才 700 多粉丝,本文开启关注才可阅读全文,很抱歉影响您的阅读体验 为了准备电赛临时学一下TM4C123G,简单记录学习内容 大家可以 ...
- Libc堆管理机制及漏洞利用技术(一)
原文地址:https://www.freebuf.com/articles/system/91527.html 原创作者:ysyy 前段时间参加了个名为RCTF的比赛,没进入决赛.正所谓知耻而后勇,作 ...
- 二进制加减溢出问题详解,byte类型加减溢出详解。
byte类型的数在JAVA中占1个字节,也就是8位,那么8位中除去一个符号位,表示数值的共有七位. 例如:1000 0000 中1就是符号位,表示负数. 0111 1111 中0也是符号位,表示正数. ...
- java 处理byte_java - 文件到Java中的byte [] - 堆栈内存溢出
===============>>#1 票数:1222 例: import java.io.File; import java.nio.file.Files; File file; // ...
- byte转化为Bitmap,防止内存溢出
Java代码 ByteArrayInputStream is =new ByteArrayInputStream(byte[]); BitmapFactory.Options options=new ...
- JVM内存溢出的几种情形
1.堆溢出 原因:大量对象占据了堆空间,而这些对象都有强引用导致无法回收,当对象大小之和>Xmx参数指定的堆大小时导致溢出! List<byte[]> list = new Arra ...
- Java内存溢出的详细解决方案
2019独角兽企业重金招聘Python工程师标准>>> 一.内存溢出类型 1.java.lang.OutOfMemoryError: PermGen space JVM管理两种类型的 ...
最新文章
- php html 文本域,html文本域标签属性有哪些?html文本域标签属性用法介绍
- SQL Server 2008 性能测试和调优
- [No0000111]java9环境变量配置bat
- ad中电源插座怎么封装_您可以在房屋中安装的各种电源插座
- hive的row_number()、rank()和dense_rank()的区别以及具体使用
- [Leedcode][JAVA][第76题][最小覆盖子串]滑动窗口]
- Ajax--serialize应用表单数据序列化
- html表单所有类型,表单form的type种类
- [TimLinux] JavaScript AJAX接收到的数据转换为JSON格式
- 搞搞Linux命令--grep
- 包含的前缀数目超过了最大值。最大值为 2_「西法带你学算法」一次搞定前缀和...
- linux下执行efi文件,在Linux下创建EFI BIOS Grub加载分区
- 知识变现海哥:如何利用自己的时间和知识获得财富自由
- Latex \TexStudio 设置数学符号
- 数学——Lipschitz连续
- 蓝桥杯:历年试题PREV-55—小计算器
- Spring框架知识
- 巴黎时装周儿童单元深圳站代言人伊朵,精彩演绎儿童时装
- 研发流程及各阶段任务
- 如何查看网卡驱动的型号
热门文章
- 2015年百度之星程序设计大赛 - 资格赛 (1004放盘子)
- python创建一个集合类型的方法是_【Python基础】一文理解Python集合,17个方法全解,看完就够了...
- solarwinds安装升级NPM和其他Orion平台产品
- BOSH和dSPACE的企业价值观
- html背景音乐停止按钮显示,JS 一个按钮控制网页背景音乐的开始暂停
- 中星睿典职称计算机考试,大纲教材 - 中星睿典 - 全国职称计算机考试|职称计算机考试模块|全国职称计算机考试试题...
- 关于硬盘模式为achi和ide的差别
- 什么是真正的云原生?
- 【翻译】MOA - Massive Online Analysis, a Framework for Stream Classification and Clustering
- linux中运行c找不到conio.h,linux中无 conio.h的解决办法