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 ...
随机推荐
- Hbase存储思想
- css瀏覽器私有前綴名
-webkit-:chrome,safari -o-:opera -moz-:firefox -ms-:ie
- The Bug and Exception of Hibernate
1: hibernate4.3.5 的@oneToOne注解有Bug,建议不使用该版本,或者使用该版本不使用@table annotation. 2:今天在用hibernate4.2.13的时候, ...
- How to mount HFS EFI on macOS
mount_hfs /dev/disk0s1 /volumes/efi
- U68641 划水(swim.pas/c/cpp)
U68641 划水(swim.pas/c/cpp) 题目背景 小小迪带你划水. 题目描述 原题 输入输出格式 输入格式: 第一行一个数 T. 接下来 T 行每行一个数表示 n 输出格式: 输出 T 行 ...
- 解决vscode egg调试出现: this socket has been ended by other party【转】
如果是最新的1.22 方案一 回退版本到1.21.1 https://code.visualstudio.com/updates/v1_21 方案二 退而求其次, 更改debug配置, 待官方或egg ...
- SpringBoot部署jar与war
jar部署与启动/关闭 1.打包 clean 清理已有target目录 package 重新打包 获取打包路径,通过 scp命令发送到服务器端,scp -P ${port} ${.jar} ${use ...
- GGS-DDU HDU - 4966
GGS-DDU Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
- 各种MM(存储器)含义
1.rom:read only memory 只读存储器 只能读,不能写. 2.ram:random access memory 随机存取存储器 可读可写. 3.fifo:first in first ...
- 「CodeForces - 50C 」Happy Farm 5 (几何)
BUPT 2017 summer training (16) #2B 题意 有一些二维直角坐标系上的整数坐标的点,找出严格包含这些点的只能八个方向走出来步数最少的路径,输出最少步数. 题解 这题要求严 ...