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 ...
随机推荐
- springCloud com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: connect
1.com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused: c ...
- Swagger2常用注解及其说明 (转)
Api 用在Controller中,标记一个Controller作为swagger的文档资源 属性名称 说明 value Controller的注解 description 对api资源的描述 hid ...
- python数据结构与算法第十一天【希尔排序】
1.希尔排序的原理 2.代码实现 def shell_sort(alist): n = len(alist) # 初始步长 gap = n / 2 while gap > 0: # 按步长进行插 ...
- QTP 自动化测试--点滴 等待
1 使用wait()语句:wait(10) 等待10秒后继续执行 Window("驷惠WIN系列[汽车4S连锁管理软件] 6.").Window("应付帐款明细查询&qu ...
- vue之v-for使用说明
demo.html <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/19 ...
- Python——Button参数
anchor: 指定按钮上文本的位置: background(bg): 指定按钮的背景色: bitmap:指定按钮上显示的位图: borderwidth(bd): 指定按钮边框的宽度: c ...
- 原子变量与CAS算法(二)
一.锁机制存在的问题 (1)在多线程竞争下,加锁.释放锁会导致比较多的上下文切换和调度延时,引起性能问题. (2)一个线程持有锁会导致其它所有需要此锁的线程挂起. (3)如果一个优先级高的线程等待一个 ...
- cuda编程视频资料
胡文美教授 http://www.gpuworld.cn/article/show/463.html
- Photoshop独立安装包下载页面
下载页面地址:https://helpx.adobe.com/cn/creative-cloud/kb/creative-cloud-apps-download.html
- mysql 下载地址
新浪的镜像站 http://mirrors.sohu.com/mysql yum安装: 首先要到MySQL yum库的下载页面http://dev.mysql.com/downloads/repo/y ...