java基本数据类型转换溢出问题
java的基本数据类型有(int、byte、double、float、char、boolean、long、short);这里介绍整型数据
示例1:
public class H_Z01 {
public static void main(String[] args) {
int b = 350;
byte a = (byte) 350 ;
System.out.println(a);
System.out.println(Integer.toBinaryString(b));
}
}
输出为:
94
101011110
发生了截取,将前面的代码更新为:
public class H_Z01 {
public static void main(String[] args) {
int b = 350;
byte a = (byte) 350 ;
System.out.println(a);
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.valueOf("01011110",2).toString()) ;
}
}
输出为:
94
101011110
94
一开始为从左为有移到使用的数据类型的位数。
例如:
350---->101011110
截取成为byte成为 01011110
但是看下面的示例自己就蒙了
示例2
public class H_Z02 {
public static void main(String[] args) {
int b = 450;
byte a = (byte) 450 ;
System.out.println(a);
System.out.println(Integer.toBinaryString(b));
}
}
输出为:
-62
111000010
按照更新代码后:
public class H_Z02 {
public static void main(String[] args) {
int b = 450;
byte a = (byte) 450 ;
System.out.println(a);
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.valueOf("11000010",2).toString()) ;
}
}
输出为:
-62
111000010
66
认为第一位为符号为那么为11000010,那么应该取数值为0100010为66,那么1100010为-66
结果依然不正确。
查取资料获得技能:
除符号位取补码
先截取为11000010
那么为10111110
在进行计算:
public class H_Z02 {
public static void main(String[] args) {
int b = 450;
byte a = (byte) 450 ;
System.out.println(a);
System.out.println(Integer.toBinaryString(b));
System.out.println(Integer.valueOf("00111110",2).toString()) ;
}
}
运行结果为:
-62
111000010
62
添加符号位:-62
与运行结果相同
总结:
java中整数溢出是取补
java基本数据类型转换溢出问题的更多相关文章
- Java基本数据类型转换及运算符
上次我们说到完了Java中的基本数据类型,今天我们来说说Java中的基本数据类型转换和Java中的运算符 基本数据类型转换 java中可以从任意基本数据类型转型到外的基本数据类型 注意:(boolea ...
- Java基本数据类型转换
一:Java的基本数据类型和引用数据类型 1:基本数据类型 2:引用数据类型 二:基本数据的类型转换 基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型 ...
- JAVA基本数据类型转换的注意事项
JAVA中基本数据类型: 类型: 字节: 范围: 默认值: byte 1 -128~127 0 short 2 -32768~32767 0 char 2 0~65535 '\u0000' int 4 ...
- java基本数据类型转换成byte[]数组
import java.io.UnsupportedEncodingException; public class ConToByte { /** * double转换byte ...
- java基本数据类型转换之向上转型和向下转换
向上转换: 整型,字符型,浮点型的数据在混合运算中相互转换,转换时遵循以下原则: 容量小的类型可自动转换为容量大的数据类型: byte,short,char → int → long → float ...
- Java 基本数据类型转换
1. Integer/int 转 String Integer a = 1; (int a = 1) String b = Integer.toString(a); 2. float 转 Strin ...
- Java基本数据类型转换二
public class TestConvert2 { /** * @param args */ public static void main(String[] args) { // TODO Au ...
- Java基本数据类型转换一
public class TestConvert { /**容量小的类型自动转化为容量大的类型数据类型按容量大小排列 * byte,short,char -> int ->long-> ...
- java基本数据类型转换字符串
1.基本数据类型转换为字符串 int t1 = 2; String t2 = Integer.toString(t1); 2.字符串转换为基本数据类型 int t3 = Integer.parseIn ...
随机推荐
- liunx 运维知识一部分
一 克隆虚拟机 大家都需要做的克隆虚拟机,在克隆虚拟机之前,需要把网卡源的UUID和Mac地址全部删除掉.不然相同会冲突使用不了. 删除UUID跟Mac的操作步骤如下: cd /etc/sysc ...
- druid 连接Oracle时出现的错误
转博主https://blog.csdn.net/jiangyu1013/article/details/70237550#commentsedit mysql 更新 SQL 语句 无错误 批量 报错 ...
- 为linux主机增加file description
在benchmarked写的服务器的时候就遇到了too many file open 这个报错. 由于遇到过很多次了,所以知道应该是单机fd打满了. 首先来看看 机器最多支持多少fd cat /pro ...
- SQL Server2012中时间字段为DateTime和VarChar的区别
在设计数据库的时候varchar类型是一个非常常见的类型,很多字段都可以使用这个类型,所以有时候在设计数据库的时候就很容易习惯性设计该类型,比如说时间类型,我们既可以DateTime类型,又可以使用v ...
- Java中Optional类的使用
从 Java 8 引入的一个很有趣的特性是 Optional 类.Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都 ...
- HTML5 History API & URL 重定向
HTML5 History API & URL 重定向 disabled server url redirect https://developer.mozilla.org/en-US/doc ...
- github & markdown & collapse & table
github & markdown collapse & table https://github.com/Microsoft/TypeScript/issues/30034 GitH ...
- placeholder解决兼容各种IE浏览器的方法
<input id="search" type="text" class="box" class="inputText&qu ...
- IntelliJ IDEA详情
详情请参考http://www.phperz.com/article/15/0923/159043.html
- Lodop提示安装或升级的注意事项
LODOP的LodopFuncs.js文件里,自动判断浏览器类型提示下载哪个,根据版本号比较判断提示升级.此文章是以前写的,图示可能过旧,新版提示不同,但是LodopFuncs.js里各个方面变动不大 ...