资讯专栏INFORMATION COLUMN

关于java中的强制类型转换和二进制表示问题

cyixlq / 1896人阅读

摘要:中用补码形式表示第一位正负位,表示负,表示正。原码一个数的二进制表示。的补码是的补码是占个字节,位占个字节,位所以强转时会截断。

1、Java中用补码形式表示
2、第一位正负位,1表示负,0表示正。
3、原码:一个数的二进制表示。

             3的原码00000011   -3的 原码 10000011

4、反码:负数原码按位取反(符号位不变)。正数原码本身。

            3的反码00000011   -3的反码11111100

5、补码:正数是原码本身。负数反码加1。

             3的补码是00000011  -3的补码是11111101

int占4个字节,32位
byte占1个字节,8位
所以强转时会截断。前24位

在内存中表示形式( 注意java中是以补码表示一个数,所以表示形式是补码,不是原码! ):
int a = 3 00000000 00000000 00000000 00000011 (强转byte时前面24个0被截断)
byte b = 3 00000011
int a = -3 11111111 11111111 11111111 11111101 (强转byte时前面24个1被截断)
byte b = -3 11111101

已知负数的补码,求负数:
补码-1=反码,反码按位取反=该负数绝对值
已知负数,求负数的补码:
1、负数原码除了符号位,按位取反(不含符号位),加1。
2、负数绝对值的补码(也就是原码),按位取反(含符号位),加1

例子:
java int 128转为byte,值:
128为正数,补码为10000000(前面24个0省略),变成byte,只剩下10000000(byte为1个字节),因为开头是1,所以为负数。即1个负数的补码是10000000。反码是01111111,原码是1000000。是128.因为是负数,所以是-128。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/77657.html

相关文章

  • 关于 Java 中的强制类型转换

    摘要:问题描述遇到一个题目经过强制类型转换以后,变量,的值分别为多少答案是这涉及到的,打算借此稍稍研究一下。分为两种,一是扩展型基本数据类型转换,二是窄化型基本数据类型转换。需要注意的是是有可能丢失数值的整体信息以及损失精度和范围的。 问题描述 遇到一个题目: 经过强制类型转换以后,变量a,b的值分别为多少? short a = 128; byte b = (byte) a;a = ?,...

    wind5o 评论0 收藏0
  • Java 数据类型运算符

    摘要:基本数据类型布尔类型或,占用位。强制类型转换强制类型转换的语法格式是,强制类型转换的运算符是圆括号。无符号右移运算符。对于低于类型如和的操作数总是先自动类型转换为类型后再移位。 注释 单行注释//......多行注释/ .../文档注释/*.../ 文档注释位于注释内容上一行 标识符和关键字 分隔符 分号:作为语句的分隔,每个Java语句必须使用分号作为结尾。花括号:定义一个代码...

    archieyang 评论0 收藏0
  • java位运算字节编码(一)

    摘要:正数的原码,反码和补码相同。变量原码反码是符号位不变,其他位取反反码补码则是在反码的基础上加补码所以在计算机中正确的表示应该是。原码反码补码此刻开始转换为类型,占个字节,符号位,用填充高位三个字节。 我们都知道计算机存储的是二进制,长度是8个比特。 byte b = 10; int i = -10; long l = 10L; 那么以上几个变量如何用二进制表示呢?很多人第一印象肯定是 ...

    Dongjie_Liu 评论0 收藏0
  • Java编程基础02——Java语言基础

    摘要:所以就想把一大串缩短点,将二进制中的三位用一位表示。以可以大写也可以小写开头版本可以表示二进制了八进制的数据表现形式由组成。结果把系数基数的权次幂相加即可。因为语言采用的是码来编码的。 1_(常量的概述和使用)* A:什么是常量(constant) 在程序执行的过程中其值不可以发生改变 B:Java中常量的分类 字面值常量 自定义常量(面向对象部分讲) C:字面值常量的...

    pakolagij 评论0 收藏0
  • 6. Java 中的基本数据类型 【连载 6】

    摘要:字符串和基本数据类型也能通过进行拼接操作,比如字符串的内容为。即基本类型和字符串类型相加时,基本类型会自动转换为其字符串表示,在这个例子中相当于回顾包装类这一小节的代码类型的最大值就是将字符串和数据类型的拼接。 数据类型定义了变量可以采用的值,例如,定义变量为 int 类型,则只能取整数值。 在 Java 中有两类数据类型: 1)原始数据类型 2)非原始数据类型 - 数组和字符串是非原...

    Kerr1Gan 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<