`

Java中double和byte数值之间的转换

阅读更多
首先说一下,在计算机内部,是怎么表示负数的?
我想计算机科班出身的人应该都知道,正整数在计算机中用原码来表示的,而负整数在计算机中用补码来表示的
所以+3 在单字节的计算机中应该表示为它的原码:00000011
而-3在单字节的计算机中应该表示为它的补码,求补码的话,先求出-3的相反数+3的原码:00000011,然后再求反码,11111100,再在上面加1,11111101,第一位表示符号位,所以这个表示的是一个负数。

代码片断1.
  double d = 567.89d;;
  byte b = (byte) d;
  System.out.println( "b " + b );
打印出来,结果是55.
怎么算得呢?我来说一下,首先在强制转换的时候把小数位截掉,然后再将整数部分和256取模
得到结果为55,
如果该整数在区间[-128,127]之间的话,就直接打印出来

代码片断1.
 double d =  500d;;
 byte b = (byte) d;
 System.out.println( "b " + b );

打印出来,结果是 -12

首先在强制转换的时候把小数位截掉,然后再将整数部分和256取模
得到的结果是244,不在[-128,127],这个时候,应该将这个值化为8位的二进制表达式:11110100
由于第一位是1,所以能确定这个数是负数。
根据刚才算负数的补码的步骤,反推出该数的反码为11110011,各位相反一下,得出这个数的原码是00001100
意即为12,根据刚才的判断是负数,所以再加上符号,就是-12了

所以第二次打印出来的结果是-12
分享到:
评论
2 楼 xiangxuehai_jiaer 2011-10-15  
首先说一下,在计算机内部,是怎么表示负数的?
我想计算机科班出身的人应该都知道,正整数在计算机中用原码来表示的,而负整数在计算机中用补码来表示的
所以+3 在单字节的计算机中应该表示为它的原码:00000011
而-3在单字节的计算机中应该表示为它的补码,求补码的话,先求出-3的相反数+3的原码:00000011,然后再求反码,11111100,再在上面加1,11111101,第一位表示符号位,所以这个表示的是一个负数。

代码片断1.
  double d = 567.89d;;
  byte b = (byte) d;
  System.out.println( "b " + b );
打印出来,结果是55.
怎么算得呢?我来说一下,首先在强制转换的时候把小数位截掉,然后再将整数部分和256取模
得到结果为55,
如果该整数在区间[-128,127]之间的话,就直接打印出来

代码片断1.
double d =  500d;;
byte b = (byte) d;
System.out.println( "b " + b );

打印出来,结果是 -12

首先在强制转换的时候把小数位截掉,然后再将整数部分和256取模
得到的结果是244,不在[-128,127],这个时候,应该将这个值化为8位的二进制表达式:11110100
由于第一位是1,所以能确定这个数是负数。
根据刚才算负数的补码的步骤,反推出该数的反码为11110011,各位相反一下,得出这个数的原码是00001100
意即为12,根据刚才的判断是负数,所以再加上符号,就是-12了

所以第二次打印出来的结果是-12  
1 楼 mti_zgq 2011-10-13  

相关推荐

    Java数值类型与byte数组相互转换

    Java bytes数组与基本类型的相互转换 Int -> Bytes int64ToByte8 int48ToByte6 int40ToByte5 int32ToByte4 int24ToByte3 int16ToByte2 int8ToByte Bytes -> Int bytesToInt64 bytesToInt48 bytesToInt40 bytesTo...

    int、char、double与byte类型之间相互转换

    在Java编程语言中,数据类型之间的转换是一项基本且重要的技能,尤其当涉及到不同类型的数值时。本文将详细介绍如何实现int、char、double与byte类型之间的相互转换,并通过具体的示例代码来阐述每一种转换方法。 #...

    Java中各个数据类型之间的转换

    反之,使用`Integer.toString()`和`Double.toString()`可以将数值转换为字符串。 4. 包装类转换 Java的每个原始类型都有对应的包装类,如`Byte`、`Short`、`Integer`等。原始类型与包装类之间可以相互转换,通过`...

    Qt中QString、QByteArray、int、double之间转换 - 苦涩的茶 - 博客园1

    要将数值转换为QByteArray,可以使用`memcpy`函数,它用于将内存区域的内容复制到另一个内存区域。例如: ```cpp QByteArray byte_head, byte_data; memcpy(byte_head.data(), &int_head, sizeof(int_head)); memcpy...

    java数据类型的转换简单数据类型之间的转换 (2). 字符串与其它数据类型的转换 (3). 其它实用数据类型转换

    一些初学JAVA的朋友可能会遇到JAVA的数据类型之间转换的苦恼,例如,整数和float,double型之间的转换,整数和String类型之间的转换,以及处理、显示时间方面的问下面笔者就开发中的一些体会介绍给大家。 我们知道,...

    Java基本类型与byte数组之间相互转换方法

    总之,这些方法提供了在Java中基础数据类型和byte数组之间转换的实用工具。它们对于数据的序列化和反序列化,网络传输,或者任何需要将数据转换为字节流的场景都非常有用。需要注意的是,进行这样的转换时,必须考虑...

    java中数据类型转换.doc

    在Java编程语言中,数据类型转换是编程过程中常见的操作,主要涉及基本数据类型之间的转换以及基本数据类型与字符串之间的转换。下面将详细讲解这些转换方式。 1. **基本数据类型的转换** Java中的基本数据类型...

    java之java类型转换

    Java 中的简单类型包括 boolean、byte、char、short、int、long、float、double 和 void 八种类型,每种类型都有其对应的封装器类,如 Boolean、Byte、Character、Short、Integer、Long、Float、Double 和 Void。...

    java 强制类型转换示例

    例如,将`double`类型的数值转换为`int`类型。Java编译器不会自动进行这种转换,因为可能会丢失精度,所以需要程序员明确指定。 2. 强制类型转换语法: 要进行强制类型转换,我们需要使用括号将目标数据类型包围,...

    Java 自动转换的资源

    5. **数值转换规则**: - 当需要将大范围的数值类型转换为小范围的数值类型时,可能会导致数据溢出。例如,long转换为int,如果long的值超过int的最大值,转换结果将是不正确的。 - 浮点数转换为整数时,会舍去...

    java 常用基础类型之强制转换

    - 在数组元素的强制转换中,需要确保所有元素都兼容目标类型,否则会抛出`ArrayStoreException`。 6. **异常处理** - 强制类型转换失败时,Java会抛出`ClassCastException`。例如,试图将非子类对象转换为子类...

    Java基本类型转换.doc

    在Java编程中,数据类型之间的转换是必不可少的操作,尤其是在处理不同类型的数据时。本文主要探讨Java中的基本类型转换,包括简单数据类型之间的转换、字符串与其他数据类型的转换以及一些实用的数据类型转换。 1....

    Java中的Number类和数值操作面试集锦

    这些子类,如 Byte、Short、Integer、Long、Float 和 Double,分别对应 Java 中的不同数值类型,并提供了各自类型特有的操作。 在实际编程中,我们经常需要进行数值类型的转换。例如,当需要将一个 Integer 对象...

    java基础,进制转换.pdf

    - 基本数据类型:Java中定义了八种基本数据类型,分为数值型、字符型和布尔型。 - byte:有符号的8位整型。 - short:有符号的16位整型。 - int:有符号的32位整型。 - long:有符号的64位整型。 - float:单...

    JAVA数据类型转换.pdf

    本文档将详细介绍Java中的数据类型转换,包括简单数据类型之间的转换、字符串与其他数据类型的转换以及一些实用的数据类型转换技巧。掌握这些转换方法能够帮助开发者更灵活地处理不同类型的数据。 #### 二、数据...

    JAVA类型转换.pdf

    - Java中可以通过java.text.SimpleDateFormat类来实现字符串和日期类型之间的转换。 - 使用SimpleDateFormat类的parse方法可以将符合特定日期格式的字符串转换为Date对象。 - 使用SimpleDateFormat类的format方法...

    数字类型 转换 字节数组

    可以将 Float、 Double、 与byte[]之间进行互换,从而可以在Java 的开发环境中实现C语言的Union 的功能! /** * 对数字和字节进行转换。 * 基础知识: * 假设数据存储是以大端模式存储的: * byte:...

    Java 字符串和基本数据类型之间的转换

    在Java编程语言中,字符串(String)和基本数据类型之间的转换是常见的操作,特别是在处理用户输入、格式化输出或解析数据时。以下将详细介绍如何在Java中进行这些转换。 1. **字符串转基本数据类型** - **整型(int...

    Java中强制类型转换共2页.pdf.zip

    本篇文章将详细探讨Java中的强制类型转换,这是Java编程中不可或缺的知识点。 Java的类型系统分为两大类:基本类型(如int、char、boolean等)和引用类型(如类、接口实例)。在进行类型转换时,Java有自动类型转换...

Global site tag (gtag.js) - Google Analytics