java 里面 long 转换int内存分析

news2024/12/23 1:22:58

了解补码知识点

要将补码转换为十进制,需要确定补码的符号位。如果补码的符号位为1,则表示为负数,否则表示为正数。

假设我们有一个补码为1 0110 1011 1100 1101 1000 0011 1101 1100
0010 1101 1111 1101 1100 0001 1100 0011 0100
首先,确定符号位。根据补码的规则,最高位的1表示负数,因此这个补码表示一个负数。

将除符号位外的其余位取反。得到反码:0 1001 0100 0011 0010 0111 1100 0010 0011

将反码转换为原码。对于负数,反码加1即可得到原码:0 1001 0100 0011 0010 0111 1100 0010 0100

将原码转换为十进制。根据原码的规则,最高位的1表示负数,因此这个原码表示一个负数。

将其余位转换为十进制,得到的结果为:-539222988。

因此,补码101101011110011011000001111011100转换为十进制为-539222988

先考虑如何将二进制补码转换为十进制整数:
若符号位是0, 则该数是正数, 原码等同于补码. 可以由原码(也就是补码)得知代表的正整数.
若符号为是1, 则该数一定是负数, 可按照以下方式转换:
方式一: 先把符号位去掉, 把剩下的非符号位取反后得到一个无符号位的二进制序列, 将该二进制序列转换为十进制整数(注意:无符号位二进制序列代表的一定是正数),
将该整数加1得到的数便是原补码代表的整数的绝对值. 如: a = 1011(补码), 011取反得到100, 100代表4, 4+1=5,
|a|=5, a=-5.
方式二: 利用公式: (-1)2^(n-1) + 非符号位代表整数 = 值. 如a =1011(补码), n = 4, 011代表3 a = -12^3 + 3 = -5.

long转换为int

在Java中,将Long类型转换为int类型时,会发生类型转换和内存表示的变化。下面是转换的内存分析:

原始的Long类型的值以二进制补码形式存储在内存中。补码是一种表示有符号整数的方法,其中最高位表示符号位,0表示正数,1表示负数。

当将Long类型的值转换为int类型时,首先将Long类型的值截断为32位,只保留低32位。

如果截断后的32位二进制表示的值在int类型的范围内,转换的结果就是该32位二进制值。

如果截断后的32位二进制表示的值超出了int类型的范围,将发生溢出。溢出时,只保留截断后的32位二进制值的低32位,丢弃高位。

如果截断后的32位二进制值的最高位为1,表示负数,转换结果为负数的二进制形式。

示例1:

Long longValue = 1234567890L;
int intValue = longValue.intValue();

在这个示例中,longValue的
二进制: 10 1101 1111 1101 1100 0001 1100 0011 0100
二进制补码:0010 1101 1111 1101 1100 0001 1100 0011 0100

将其截断为32位后:1101 1111 1101 1100 0001 1100 0011 0100 (补码)
根据补码的规则,最高位的1表示负数,因此这个补码表示一个负数。将除符号位外的其余位取反。
方式一
按位取反得到反码:1010 0000 0010 0011 1110 0011 1100 1011
加1 得到原码
1010 0000 0010 0011 1110 0011 1100 1100 去掉第一位转换为十进制数为 539 222 988
1表示负数
转换为int类型的结果为:-539 222 988

方式二
按位取反:1010 0000 0010 0011 1110 0011 1100 1011 其对应的十进制数为 539 222 987
加1 539 222 988 |a|=539 222 988, a=-539 222 988
-10 0000 0010 0011 1110 0011 1100 1100
转换为int类型的结果为:-539 222 988

在这里插入图片描述
在这里插入图片描述

示例2:

Long longValue = 6444823059L;
int intValue = longValue.intValue();

在这个示例中,longValue的二进制
二进制: 1 1000 0000 0010 0100 0011 0010 0001 0011
补码: 0001 1000 0000 0010 0100 0011 0010 0001 0011

将其截断为32位后:1000 0000 0010 0100 0011 0010 0001 0011
根据补码的规则,最高位的1表示负数,因此这个补码表示一个负数。将除符号位外的其余位取反。
方式一
按位取反得到反码:1111 1111 1101 1011 1100 1101 1110 1100
加1 得到原码
1111 1111 1101 1011 1100 1101 1110 1101 去掉第一位转换为十进制数为 2 145 111 533
1表示负数
转换为int类型的结果为:-2 145 111 533

方式二
按位取反:1111 1111 1101 1011 1100 1101 1110 1100
其对应的十进制数为 2 145 111 532
加1 2 145 111 533 |a|=2 145 111 533, a=-2 145 111 533

转换为int类型的结果为:-2 145 111 533

在这里插入图片描述

在这里插入图片描述

示例3:

Long longValue = 6191460207L;
int intValue = longValue.intValue();

在这个示例中,longValue的二进制
二进制: 1 0111 0001 0000 1010 0010 1111 0110 1111
补码: 0001 0111 0001 0000 1010 0010 1111 0110 1111

将其截断为32位后:0111 0001 0000 1010 0010 1111 0110 1111
根据补码的规则,最高位的0表示正数,因此这个补码表示一个正数,正数的补码就是原码本身
0111 0001 0000 1010 0010 1111 0110 1111

转换为int类型的结果为:1 896 492 911

在这里插入图片描述
在这里插入图片描述

二进制在线转换地址
http://binary-converter.bchrt.com/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/930064.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

无涯教程-进程 - 组会话控制

在本章中,我们将熟悉进程组,会话和作业控制。 进程组(Process Groups ) - 进程组是一个或多个进程的集合,一个进程组由一个或多个共享相同进程组标识符(PGID)的进程组成。 会话(Sessions) - 它是各种进程组的集合。…

软考A计划-系统集成项目管理工程师-项目风险管理-下

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例点击跳转>软考全系列点击跳转>蓝桥系列 👉关于作者 专注于Android/Unity和各种游…

开源哲学:自由、共享与合作

🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…

Spark最后一课

1.Spark的提交过程(YarnCluster) 1.命令输入脚本启动,启动submit任务 2.解析参数 看是cluster还是yarn单点模式 3.创建客户端YarnClusterApplication 4.封装提交命令交给RM 5.RM在NM上启动ApplicationMaster(AM) 注意AM消耗的资源都是container的 6.AM根据参数启动Driver并且…

使用Burp Suite进行Web应用渗透测试

使用Burp Suite进行Web应用渗透测试是一种常见的方法,可以帮助发现Web应用程序中的安全漏洞和弱点。 步骤: 准备工作: 首先,确保已经安装了Burp Suite,并配置浏览器以使用Burp Suite作为代理。 配置代理:…

Nvidia Jetson 编解码开发(7)Jetpack 4.x版本Multimedia API 硬件编码开发--输出端对接ROS publish

1.前言 Nvidia Jetson 编解码开发(6)Jetpack 4.x版本Multimedia API 硬件编码开发--输入端对接Camera V4L2采集_free-xx的博客-CSDN博客 基于上篇基于开发 需求: (1)2路Camera采集 + H265编码 (2)2路编码完的H265数据通过ROS 发布出去,上位机播放 2. 开发记录 2…

centos7根目录扩容

centos7根目录扩容 具体操作步骤欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如…

C++技能系列 - 编码规范(Google C++编程风格指南)

现在的一切都是为将来的梦想编织翅膀,让梦想在现实中展翅高飞。 Now everything is for the future of dream weaving wings, let the dream fly in reality. 编码规范(Google C Style Guide) 编码规范(Google C Style Guide&am…

【每日一题】1267. 统计参与通信的服务器

【每日一题】1267. 统计参与通信的服务器 1267. 统计参与通信的服务器题目描述解题思路 1267. 统计参与通信的服务器 题目描述 这里有一幅服务器分布图,服务器的位置标识在 m * n 的整数矩阵网格 grid 中,1 表示单元格上有服务器,0 表示没有…

MyBatis与Spring的集成整合加优化分页功能

目录 一.为什么要将MyBatis和Spring整合??? 二.配置环境 2.1 pom文件 2.2 xml文件 三.演示举例 四.Aop整合pageHelper 分页插件 今天的分享就到这啦!!! 一.为什么要将MyBatis和Spring整合&#xff1f…

超声波创始人杨子超:AI Agents崛起

2023年7月23日,超声波俱乐部AI Open Day在北京举办,百位AI领域顶级创业者、知名投资人汇聚一堂。超声波创始人杨子超进行了一场精彩的分享,以下为杨子超的分享整理: 分享嘉宾:杨子超 超声波创始人分享主题:…

Gradle 如何配置全局 mavenCentral()

我们都知道 Gradle 会使用 Maven 的中央仓库。 在 Gradle 的配置文件中,通常有一个 mavenCentral() 如果我们想把 mavenCentral() 的仓库地址全局替换掉别的仓库地址的话。 我们可以在 C:\Users\yhu\.gradle 目录下创建一个 init.gradle 文件。 文件中的代码为&a…

mq与mqtt的关系

文章目录 mqtt 与 mq的区别mqtt 与 mq的详细区别传统消息队列RocketMQ和微消息队列MQTT对比:MQ与RPC的区别 mqtt 与 mq的区别 mqtt:一种通信协议,规范 MQ:一种通信通道(方式),也叫消息队列 MQ…

Cauchy’s integral formula

见:https://math.mit.edu/~jorloff/18.04/notes/topic4.pdf

基于Java的旅游信息推荐系统设计与实现,springboot+vue,MySQL数据库,前后端分离,完美运行,有三万字论文。

基于Java的旅游信息推荐系统设计与实现,springbootvue,MySQL数据库,前后端分离,完美运行,有三万字论文。 前台主要功能:登录注册、旅游新闻、景区信息、美食信息、旅游线路、现在留言、收藏、预定旅游线路…

力扣数组类题目--41缺失的第一个正数

41 缺失的第一个正数 给你一个未排序的整数数组 nums ,请你找出其中没有出现的最小的正整数。 请你实现时间复杂度为 O(n) 并且只使用常数级别额外空间的解决方案。 示例 1: 输入:nums [1,2,0] 输出:3 示例 2: 输入&a…

词向量及文本向量

文章目录 引言1. 文本向量化2. one-hot编码3. 词向量-word2vec3.1 词向量-基于语言模型 4 词向量 - word2vec基于窗口4.1 词向量-如何训练 5. Huffman树6. 负采样-negative sampling7. Glove基于共现矩阵7.1 Glove词向量7.2 Glove对比word2vec 8. 词向量训练总结9. 词向量应用9…

Docker安装与部署java项目

文章目录 Docker安装与部署java项目 用的宝塔服务器查看容器命令部署 java 项目这是别人用的 用这个要保证 自己docker 有 jdk1.8这个是我自己的 宝塔安装的 jdk1.8 注意 需要把 jshepr 替换成自己的 jar 名字 要小写下面命令有关于 jshepr 都要改成 上面写地自己的jar3&#x…

优质内容竞争时代,爱奇艺踏进「质变」进行时

作者 | 方怡 来源 | 洞见新研社 各大企业半年报接连发布的热闹关头,爱奇艺给出了意料之中的喜人成绩。 财报显示,今年二季度,爱奇艺总营收为78亿元,同比增长17%。其中,包括会员服务、广告收入、内容发行和其他收入在…

Nuxt 菜鸟入门学习笔记三:视图

文章目录 入口文件组件 Components页面 Pages布局 Layouts Nuxt 官网地址: https://nuxt.com/ Nuxt 提供多个组件层来实现应用程序的用户界面。 入口文件 App.vue组件 Components页面 Pages布局 Layouts 下面逐一进行介绍。 入口文件 默认情况下,Nu…