`
默默的小熊
  • 浏览: 232780 次
社区版块
存档分类
最新评论

int强制类型转换byte

 
阅读更多
public class Test {
	public static void main(String[] args) {
		int start = -131;
		int end = 131;

		for (int i = start; i < end; i++) 
			if ((byte) i != i) 
				System.out.println("原数:" + i + "\t转化后:" + (byte) i);
	}

}
    程序运行结果如下:
原数:-131	转化后:125
原数:-130	转化后:126
原数:-129	转化后:127
原数:128	转化后:-128
原数:129	转化后:-127
原数:130	转化后:-126
    为什么会出现这种情况呢?
    因为Java中byte是用8位来存储,只能表示-128~127之间的数,当由int强制类型转化为byte时,系统就采取了截取int后8位的做法。
//java采用补码存储整数,int型为32位,byte为8位
//那么130在内存中的表示形式:00000000 00000000 00000000 10000010
//这样截取后8位就变成10000010,补码表示的时候第一位是符号位,0正1负,
//所以可以知道10000010肯定是一个负数了,再来看它的数值部分,
//补码由正数变负数,还是正数变负,方法:“按位取反,再加1”,
//所以0000010应该变为1111101 + 1 = 1111110(即126)
//又因为是负数,所以就截取变成-126了

//我们再来看下-130的例子(符号位是1,其余按位取反+1)
//-130在内存中的表示形式:11111111 11111111 11111111 01111110
//这样截取后8位就变成01111110
//显然这是整数啊,然后数值部分是126
//64+32+16+8+4+2=126
 
    

分享到:
评论

相关推荐

    C#强制类型转换

    在 C# 中,强制类型转换是通过使用关键字 `(int)` 实现的,而不是使用 `Int32.Parse()` 或 `Convert.ToInt32()`。 在 C# 中,`int` 是一个关键字,表示 32 位有符号整数,它对应于 .NET Framework 中的 `System.Int...

    java 强制类型转换示例

    在Java编程语言中,强制类型转换是将一个数据类型转换为另一个兼容的数据类型的过程。这通常发生在处理不同类型的变量或对象之间需要交互的情况。在Java中,有两种类型的转换:自动类型转换(隐式转换)和强制类型...

    强制类型转换

    Java 中有两种主要的类型转换方式:自动类型转换(Automatic Type Conversion)和强制类型转换(Explicit Type Conversion)。下面我们将深入探讨这两种类型转换,以及它们在实际编程中的应用。 一、自动类型转换 ...

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

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

    BYTE类型之间相互转换

    要将一个`BYTE`转换为其他基本类型,你可以直接赋值或使用强制类型转换运算符 `(type)`。例如,将`BYTE`转换为`int`: ```cpp BYTE byteValue = 123; int intValue = byteValue; //隐式转换 int intValue2 = ...

    【IT十八掌徐培成】Java基础第02天-03.数据类型-强制类型转换.zip

    数据类型-强制类型转换”主要探讨了Java中的数据类型转换,特别是强制类型转换。 1. 基本数据类型: - 整型:byte(1字节),short(2字节),int(4字节),long(8字节) - 浮点型:float(4字节),double(8...

    Java中的强制类型转换 大数转小数

    在这个主题中,我们将讨论大数转小数的强制类型转换,例如int类型转short类型。 大数转小数的强制类型转换规则 ----------------------------- 在Java中,大数转小数的强制类型转换中,多出的高位部分会被截断。...

    C语言如何将int转byte类型

    // 直接强制类型转换 ``` 2. 模运算:在描述中提到了 `%255`,这是为了将 `int` 值对255取模,确保结果在 `0` 到 `255` 的范围内。这种方法适用于 `int` 值是非负的情况,但不能处理负数。 ```c int intValue = ...

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

    在Java编程语言中,强制类型转换是将一个数据类型转换为另一个数据类型的语法操作。这通常发生在需要将数值从精度较高的类型转换为精度较低的类型,或者在处理对象时需要明确指定子类对象为父类类型的情况。在“java...

    Java中byte转int的方法

    用强制类型转换:int i = (int) aByte,  比如:若aByte=0xff(即数值为-1)。则转化为int后。i为0xffffffff。数值仍为-1。  2)保持低字节中各个位不变,3个高字节所实用0填充  应用场景:编解码操作,  ...

    C#自动类型转换与强制类型转换的讲解

    自动类型转换 隐式类型转换 – 这些转换是 C# 默认的以安全方式进行的转换, 不会导致数据丢失。例如,从小的整数类型转换为大的整数类型,从派生类转换为基类。 转换规则 从存储范围小的类型到...强制类型转换 显式

    Java中类型转换.pdf

    本文介绍了 Java 中的自动类型转换和强制类型转换的方法。 自动类型转换是指不需要书写代码,由系统自动完成的类型转换。这种转换的规则是从存储范围小的类型到存储范围大的类型。具体规则为:所有的 byte、short、...

    浅谈Java中强制类型转换的问题

    在Java编程语言中,强制类型转换是将一个数据类型转换为另一个不兼容的数据类型的过程。这种转换通常是必要的,因为Java是一种静态类型的语言,它要求在编译时就确定变量的类型。然而,有时我们可能需要将一个对象从...

    Cnic.Convert.rar_byte_数据类型转换

    在标题"Cnic.Convert.rar_byte_数据类型转换"中,我们可以看出这是关于在Java或者其他类似语言中进行数据类型转换的一个资源,特别是涉及`Int`、`Byte[]`和`Long`之间转换的方法。描述中提到的“位移”方法是一种...

    数据类型转换、运算符、方法入门.docx

    在Java中,数据类型转换分为自动类型转换和强制类型转换。 1. 自动类型转换(隐式转换) 自动类型转换是指编译器根据上下文自动将数据从一种类型转换为另一种类型,只要转换不会导致数据丢失或溢出。在Java中,当...

    类型转换

    类型转换分为两种主要类型:自动类型转换(Automatic Type Conversion)和强制类型转换(Forced Type Conversion,也称显式类型转换)。 3.9.1 Java的自动转换 自动类型转换发生在源类型的数据可以直接安全地转换...

    编程语言java类型转换.pdf

    - byte、short、char可以相互转换,但是转换到容量大的类型(如int)时需要强制类型转换。 - int、long、float、double之间的转换也遵循类似的规则。 5. 引用数据类型的转换 对于对象引用类型的转换,需要注意的是...

    java中数据类型转换.doc

    对于`byte`、`short` 和 `char` 这三种类型来说,它们之间不存在自动类型转换关系,但可以通过强制类型转换实现转换。 **示例代码**: ```java short short1 = 50; byte b1 = (byte) short1; // 强制类型转换 char ...

    TypeByte@2019_C#_C++_C数据类型转换时间戳转换_

    C++的数据类型转换包括静态类型转换(static_cast)、动态类型转换(dynamic_cast)、强制类型转换(C-style cast)和const_cast。这些转换在处理多态性和内存管理时非常有用。对于时间戳,C++标准库没有直接提供...

Global site tag (gtag.js) - Google Analytics