[java 基础知识] byte int 互转

简介: [java 基础知识] byte int 互转

java中byte int 是有符号的,在计算机系统中,数值一律用补码来表示(存储)

  • java 中 int占4个字节
  • java 中 byte占1个字节
  • 补码知识:
  • 正数的原码=反码=补码
  • 负数的补码 = 反码 + 1 (反码 = 原码按位取反,除了符号位)

题目1

将byte数值-127 转为无符号 int值

byte类型的 -127

⇒ 1111 1111 (原码)

⇒ 1000 0000 (反码)

⇒ 1000 0001 (补码)

因为Java的int类型占4个字节

byte 转 int 的时候 ,高位补符号位 ,也就是 1

在机器中表示为 1111 1111 1111 1111 1111 1111 1000 0001

byte a = (byte) -127;

⇒ 原码 1000 0000 0000 0000 0000 0000 0111 1111 (-127)

怎么确保扩展时补0 呢?

int b = a & 0xff
//
//0000 0000 0000 0000 0000 0000 1111 1111  ==> 0xFF 高24位都是0
& 1111 1111 1111 1111 1111 1111 1000 0001  ==> -127 int 形式
//0000 0000 0000 0000 0000 0000 1000 0001  
达到低位不变高位补0的效果  补0扩展
//

0000 0000 0000 0000 0000 0000 1000 0001 是正数 所以就是原码

所以,byte类型的 -127 转为 无符号int 就是129

题目2

将int数值129 转为byte值

int 转 byte

byte c = (byte) 129;

⇒ 129 (int类型4个字节)正数补码 = 原码

0000 0000 0000 0000 0000 0000 1000 0001

⇒ 转byte (只保留1个字节)

1000 0001

⇒ 转 原码 (先-1 再取反)

1111 1111

也就是 -127

目录
打赏
0
0
0
0
0
分享
相关文章
|
3月前
|
byte加byte居然是int了
为什么在Java中,byte加byte的结果不是byte,而是int?本文将带你从Java语言规范和JVM规范层面研究该问题。
98 3
byte加byte居然是int了
|
3月前
|
Java零基础-charAt(int index)详解
【10月更文挑战第20天】Java零基础教学篇,手把手实践教学!
89 4
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
这篇文章解释了Java中`int`基本数据类型和其包装类`Integer`之间的区别,并指出在进行`==`运算时,`Integer`会拆箱为`int`类型,然后比较它们的值是否相等。
【Java基础面试十一】、int和Integer有什么区别,二者在做==运算时会得到什么结果?
【Java基础面试五】、 int类型的数据范围是多少?
这篇文章回答了Java中`int`类型数据的范围是-2^31到2^31-1,并提供了其他基本数据类型的内存占用和数值范围信息。
【Java基础面试五】、 int类型的数据范围是多少?
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
杭州 【Java基础知识 11】java泛型方法的定义和使用(学习+改进+自己理解,想法) (借鉴-侵-删)
63 1
|
7月前
|
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
150 0
|
7月前
|
Java:commons-codec实现byte数组和16进制字符串转换
在上述代码中,`Hex.encodeHexString(bytes)`用于将byte数组转换为16进制字符串,`Hex.decodeHex(hexString)`用于将16进制字符串转换为byte数组。
159 0
Java中的多线程编程:基础知识与实践
【5月更文挑战第29天】 在现代软件开发中,多线程编程是一个不可忽视的领域。特别是在Java这种广泛使用的编程语言中,掌握多线程的概念和技术对于开发高效、响应迅速的应用程序至关重要。本文将深入探讨Java多线程的核心概念、实现机制以及常见问题的解决方案。我们将从基础出发,逐步揭示如何通过多线程提升程序性能,并且讨论并发编程中的挑战和解决策略。文章的目的是为开发者提供一个清晰的多线程编程指南,帮助他们在实际项目中有效地应用这些知识。
51 3
Java中的多线程编程:基础知识与实践
【5月更文挑战第30天】 在现代软件开发中,多线程编程是提高应用程序性能和响应能力的关键。特别是在Java这样的多平台、多用途的编程语言中,掌握多线程技术至关重要。本文旨在为读者提供有关Java多线程编程的全面介绍,从基本概念到高级应用技巧,帮助初学者和有经验的开发者理解并有效使用多线程。文章不仅涉及基础理论,还包括代码示例和最佳实践,确保读者能够将知识应用于实际项目中。
Java中的多线程编程:基础知识与实践
【5月更文挑战第28天】 在现代计算机科学中,多线程编程是一个重要的概念,它允许程序同时执行多个任务。在Java中,多线程编程是通过创建并管理线程来实现的。本文将介绍Java中多线程编程的基础知识,包括线程的概念、创建和控制线程的方法,以及线程同步和通信的相关技术。通过阅读本文,读者将对Java中的多线程编程有一个全面的了解,并能在实际编程中应用这些知识。

热门文章

最新文章