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 ...
随机推荐
- git修改用户名、邮箱
在windows使用git命令方法如下(以win7为例):1.msysgit 是 Windows 版的 Git可以百度搜索Git下载.2.安装完成后,开始菜单里找到“Git”->“Git Bas ...
- 在python中定义二维数组
发表于 http://liamchzh.0fees.net/?p=234&i=1 一次偶然的机会,发现python中list非常有意思. 先看一段代码 [py]array = [0, 0, 0 ...
- SSH本地端口转发的理解
ssh -L 3307:127.0.0.1:3306 user@ssh-server -N 其中127.0.0.1:3306是指 ssh-server要访问资源的ip和端口 而3307则是隧道的开口, ...
- 一、关于a标签伪类中的visited不起作用问题
一.代码示范 <html> <head> <title>伪类超链接</title> <!--<link href="./test. ...
- 获取网络图片并显示在picturbox上,byte[]数组转换成Image:
private void getWebPicture_Click(object sender, EventArgs e) { WebRequest request = WebRequest.Creat ...
- SpringMVC中对多部件类型解析---文件(图片)上传
加入上传图片jar包 commons-io-2.4.jar commons-fileupload-1.3.jar 在页面form中提交enctype="multipart/form-data ...
- linux读取Windows的txt文件问题
问题:Windows下生成的txt文件,在Linux下读取时会读取到多余字符(如: ^M) 原因:Windows和Linux下的换行符不一致 解决:在Linux代码中将多余字符去掉 ) buf = b ...
- Military Problem CodeForces 1006E (dfs序)
J - Military Problem CodeForces - 1006E 就是一道dfs序的问题 给定一个树, 然后有q次询问. 每次给出u,k, 求以u为根的子树经过深搜的第k个儿子,如果一个 ...
- 接口压测初识java GC
1.先用Spring Boot 搭建 web 服务,构建api 服务 @RequestMapping("/index") @ResponseBody public String i ...
- MT【300】余弦的三倍角公式
2017清华大学THUSSAT附加学科测试数学(二测)$\cos^5\dfrac{\pi}{9}+\cos^5\dfrac{5\pi}{9}+\cos^5\dfrac{7\pi}{9}$ 的值为___ ...