byte=130(为byte类型赋值超长度的内容)
2018-02-18 23:30
274 查看
byte的长度是-127~128,目前需要赋值130,会出现什么情况;
首先会出现编译错误,会报出丢失精度,如果不报错可以强制类型转换,将130强转成byte
直接上代码解释:/**
* 练习:byte b = 130
* @author wangjg
*
*/
public class Byte130 {
public static void main(String[] args) {
// 此行编译会报错,byte类型的数据范围是-127到128,130超过了它的范围会报丢失精度
// byte b = 130;
// 修改方法是强制转换
byte b = (byte) 130;
// 打印结果
System.out.println(b);
/**
* 结果是:-126
* 分析过程:
* 我运行发现结果是-126,我想知道为什么是这个结果,那么就需要知道计算机是如何计算的
* 在计算机内存中数据的运算都是通过补码的方式进行的;
* 而且要得到补码,我们需要计算出数据的二进制。
*
* A:获得130这个数值的二进制
* 1、130首先是一个整数;
* 通过8421码的方式我们可以计算出128的二进制是10000000;
* 128+2为130,所以130的二进制是
* 10000010
* 2、130为int类型,占4个字节,所以空白位需要补齐
* 00000000 00000000 00000000 100000010
* 这个码是原码,看最高位是0表示正数,已知正数的原码反码补码都一致
*
*B: 做截取操作,把int类型截成byte类型,int为4位,byte未1为,截取后的数据为
* 10000010
*
*C:已知补码求原码
* 符号位 数值位
* 补码 1 0000010
*
* 反码 1 0000001
*
* 原码 1 1111110
*
*
* 1111110为126,符号位1为负数,所以值为-126
*/
}
}
首先会出现编译错误,会报出丢失精度,如果不报错可以强制类型转换,将130强转成byte
直接上代码解释:/**
* 练习:byte b = 130
* @author wangjg
*
*/
public class Byte130 {
public static void main(String[] args) {
// 此行编译会报错,byte类型的数据范围是-127到128,130超过了它的范围会报丢失精度
// byte b = 130;
// 修改方法是强制转换
byte b = (byte) 130;
// 打印结果
System.out.println(b);
/**
* 结果是:-126
* 分析过程:
* 我运行发现结果是-126,我想知道为什么是这个结果,那么就需要知道计算机是如何计算的
* 在计算机内存中数据的运算都是通过补码的方式进行的;
* 而且要得到补码,我们需要计算出数据的二进制。
*
* A:获得130这个数值的二进制
* 1、130首先是一个整数;
* 通过8421码的方式我们可以计算出128的二进制是10000000;
* 128+2为130,所以130的二进制是
* 10000010
* 2、130为int类型,占4个字节,所以空白位需要补齐
* 00000000 00000000 00000000 100000010
* 这个码是原码,看最高位是0表示正数,已知正数的原码反码补码都一致
*
*B: 做截取操作,把int类型截成byte类型,int为4位,byte未1为,截取后的数据为
* 10000010
*
*C:已知补码求原码
* 符号位 数值位
* 补码 1 0000010
*
* 反码 1 0000001
*
* 原码 1 1111110
*
*
* 1111110为126,符号位1为负数,所以值为-126
*/
}
}
相关文章推荐
- java初学者知识小总结-01(byte数据类型赋值出错)
- 编写程序定义一个vector 对象,其每个元素都是指向string 类型的指针,读 取该vector 对象,输出每个string 的内容及其相应的长度。
- Oracle中varchar2类型的字段长度是按照byte来定义的
- c# .net 如何把byte类型仅仅转换成string而不改变其内容
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
- 将byte数组的内容转换成BSTR类型,反之。
- 将byte数组的内容转换成BSTR类型,反之。
- FileInputStream.read(byte[] b),数组长度大于读取内容字节数长度
- InnerException 消息是“反序列化对象 属于类型 *** 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。(注意细节)
- C# 中 byte[] 操作的类 方便 传送数据时添加多种数据类型的内容
- 面试题:byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
- 【C#】解决进行反序列化时出错:。InnerException 消息是“反序列化对象 属于类型 System.String 时出现错误。读取 XML 数据时,超出最大字符串内容长度配额 (8192)。
- 将byte数组的内容转换成BSTR类型
- ORACLE 中 VARCHAR2 类型的字段长度是按照 byte 来定义的 一个容易被忽略的问题
- 在Oralce中扩展RAW类型字段长度,并补充增加长度的取值内容
- MSSQL 查找用户数据库下面的表名、表说明、列名、列说明、列类型、列长度、列是否可为空相关信息
- C# string类型和byte[]类型相互转换
- 一步步学习SPD2010--第七章节--使用BCS业务连接服务(4)--创建Office应用程序外部内容类型
- Java已知InputStream长度,将其转换为byte[]
- 【C#串口编程计划】通信协议解析 -- byte[]与常用类型的转换