java~二进制补码的用途

这篇具有很好参考价值的文章主要介绍了java~二进制补码的用途。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

二进制补码(Binary Two's Complement)是一种表示有符号整数的方法,在计算机中广泛使用。它是通过对正数取反加一得到负数的表示方式。

在二进制补码表示中,一个固定位数的整数由固定数量的二进制位表示,其中最高位被用作符号位。对于N位的二进制补码表示,最高位(最左侧的位)为符号位,0表示正数,1表示负数。

正数的二进制补码表示与其二进制原码表示相同。例如,十进制数3的二进制补码表示为00000011

负数的二进制补码表示通过以下步骤获得:

  1. 将对应正数的二进制表示取反,即将0变为1,将1变为0。
  2. 对取反后的结果加1。

例如,十进制数-3的二进制补码表示为11111101。以下是对应步骤的说明:

  1. 正数3的二进制表示是00000011
  2. 取反得到11111100
  3. 加1得到11111101,即-3的二进制补码表示。

使用二进制补码的好处是可以将正数和负数的加法、减法等运算转化为相同的二进制操作,简化了计算机的运算逻辑。

需要注意的是,二进制补码表示中的最小负数的绝对值比最大正数的绝对值多一个单位,这是由于二进制补码表示中,负数的范围比正数的范围多一个。例如,在8位的二进制补码表示中,最小的负数是-128,而最大的正数是127。

容易搞混

  • java里byte是有符号的整数,它占用的存储空间为1个字节,即8位,使用8个二进制数表示,也可以用2个16进制数表示,取值为-128~127
  • java里没有无符号的byte[],如果你非要表示无符号的,那需要使用short/int类型来表示,就是使用integer的8位,通过int unsignedByte = byteValue & 0xFF;可以得到无符号的byte值

byte[]来表示int数字

通过byte[4]来表示一个int数字,byte[4]就是4个字节的意思,每个byte[0]表示一个字段,取值都是-128~127,可以测试一下

		log.info("{}", Bytes.toBytes(256));// [0, 0, 1, 0]
		log.info("{}", Bytes.toBytes(255));// [0, 0, 0, -1]
		log.info("{}", Bytes.toBytes(128));// [0, 0, 0, -128]
		log.info("{}", Bytes.toBytes(129));// [0, 0, 0, -127]
		log.info("{}", Bytes.toBytes(-1));// [-1, -1, -1, -1]
		log.info("{}", Bytes.toBytes(127));// [0, 0, 0, 127]

从上面的代码中,我们看到一个int类型的-1通过byte[]表示为[-1,-1,-1,-1],它是取-1的补码,再加1得到的。文章来源地址https://www.toymoban.com/news/detail-491919.html

到了这里,关于java~二进制补码的用途的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 安全研究 # 课题:二进制成分分析(Binary SCA)

    本文参考多篇文章写作而成,出处在文末注明(本文在课题开展过程中长期保持更新)。 SCA(Software Composition Analysis)软件成分分析,通俗的理解就是通过分析软件包含的一些信息和特征来实现对该软件的识别、管理、追踪的技术。通常用来对软件源码、二进制软件包等进行静

    2024年02月16日
    浏览(36)
  • 关于二进制的原码、补码和反码,以及表示范围、常见位运算符和进制转换的理解与简述

    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权) https://www.cnblogs.com/cnb-yuchen/p/17963363 出自【进步*于辰的博客】 参考笔记一,P3.13、P5.1;笔记三,P43.1/3、P44.1。 注:我暂且没有整理关于二进制、原码、补码和反码等概念的理论,本文中的阐述都基于

    2024年02月02日
    浏览(46)
  • [ARM汇编]计算机原理与数制基础—1.1.3 二进制补码

    在计算机中,为了表示有符号整数(即正数和负数),通常采用二进制补码表示法。二进制补码不仅可以表示负数,还能简化计算机的加法和减法运算。接下来,我们将介绍二进制补码的概念及其计算方法。 原码、反码和补码 在讨论补码之前,我们先了解一下原码和反码的

    2024年02月08日
    浏览(53)
  • 【Elasticsearch教程6】Mapping字段类型之二进制binary

    binary类型接收一个Base64编码的字符串,默认情况二进制字段 不能被存储和检索 。 binary不能被存储? 这个意思不是说没有存储在ES,而是说mapping中该字段的store参数默认是false。 默认情况下字段的值都会存储到 _source 里, binary 类型的值也是如此。 如果 store 属性设置为true,

    2024年02月05日
    浏览(53)
  • 将Swift Package构建为通用二进制文件 Universal Binary

      因此,在苹果在WWDC 2020期间宣布他们将把Mac从英特尔处理器过渡到苹果硅之后,现在是时候让每个人都准备好他们的软件了。 对大多数人来说,这次过渡可能更容易一些,特别是那些已经在iOS上支持arm64的人,但仍有工作要做,以确保工具和预编译的发行版支持使用Apple

    2024年02月11日
    浏览(43)
  • 图文结合带你搞懂MySQL日志之Binary log(二进制日志)

    往期回顾 图文结合带你搞定MySQL日志之Undo log(回滚日志) 图文结合带你搞懂InnoDB MVCC 图文结合带你搞懂MySQL日志之Redo Log(重做日志) 图文结合带你搞懂MySQL日志之Error Log(错误日志) 图文结合带你搞懂MySQL日志之Slow Query Log(慢查询日志) 图文结合带你搞懂MySQL日志之relay log(中

    2024年02月07日
    浏览(61)
  • 【算法】Reconstruct a 2-Row Binary Matrix 重构 2 行二进制矩阵

    给你一个 2 行 n 列的二进制数组: 矩阵是一个二进制矩阵,这意味着矩阵中的每个元素不是 0 就是 1。 第 0 行的元素之和为 upper。 第 1 行的元素之和为 lower。 第 i 列(从 0 开始编号)的元素之和为 colsum[i],colsum 是一个长度为 n 的整数数组。 你需要利用 upper,lower 和 colsu

    2024年02月12日
    浏览(51)
  • MySQL 8.0 OCP (1Z0-908) 考点精析-架构考点1:二进制日志文件(Binary log)

    【免责声明】文章仅供学习交流,观点代表个人,与任何公司无关。 编辑|SQL和数据库技术(ID:SQLplusDB) MySQL中有多种类型的日志文件,这些日志可用于故障排除、性能调整和审计等目的,帮助找出正在发生的活动。 常见的日志文件包括: 日志类型 写入日志的信息 错误日志(

    2024年02月16日
    浏览(54)
  • java图片转二进制流_java将文件转化成二进制流

    二进制流的主要编码格式是base64码。可以在网上找一些在线转base64编码的网站进行尝试转换。 例如:http://imgbase64.duoshitong.com/然后通过前端展现和下载。 前端显示二进制流图片(src中放置base64码及二进制流) 前端下载二进制流文件(herf中放置base64码及二进制流,download后面放

    2024年02月06日
    浏览(56)
  • Java中读取二进制文件

    读写二进制文件常用的类有DataInputStream和DataOutputStream。         利用DataInputStream类读二进制文件,其实与利用FileInputStream类读文本文件及其相似,也要用到FileInputStream类关联二进制文件。具体操作步骤如下:         1)导入相关的类                 import ja

    2023年04月08日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包