二进制补码-反码-原码「建议收藏」

二进制补码-反码-原码「建议收藏」最近学习java基础语法的时候,对其基本数据结构中的二进制位数与十进制大小间的转换产生了疑惑,想起学习IP地址的时候也貌似产生了相同的困惑,所以干脆总结一下,权当学习及备忘了。在计算机内,定点数有

大家好,又见面了,我是你们的朋友全栈君。

最近学习java基础语法的时候,对其基本数据结构中的二进制位数与十进制大小间的转换产生了疑惑,想起学习IP地址的时候也貌似产生了相同的困惑,

所以干脆总结一下,权当学习及备忘了。

在计算机内,定点数有3种表示法:原码反码补码
原码:就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。
反码:表示法规定:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外。
补码:表示法规定:正数的补码与其原码相同;负数的补码是在其反码的末位加1。

首先需要明确是java中是用补码表示二进制数,补码的最高位是符号位,最高位为“0”表示正数,最高位为“1”表示负数。
正数补码为其本身;
负数补码为其绝对值各位取反加1;(这里还记得“若干年”前C语言老师说的一句“各位取反,末位加一”。。。)

例如:
+21,其二进制表示形式是00010101,则其补码同样为00010101
-21,按照概念其绝对值为00010101,各位取反为11101010,再加1为11101011,即-21的二进制表示形式为11101011

步骤:
1、byte为一字节8位,最高位是符号位,即最大值是01111111,因正数的补码是其本身,即此正数为01111111
可以借助等比数列的求和公式,得到其十进制表示形式为(2^7-1)即127
2、最大正数是01111111,那么最小负是10000000(最大的负数是11111111,即-1)

需要强调的是,由于正数的原码、补码都一样,求其十进制大小的时候无需转换(所以也容易产生混淆),

而负数则不同。此处的最大正数01111111和最小负数10000000都是补码形式(java的语言规定。。)

3、10000000是最小负数的补码表示形式,我们把补码计算步骤倒过来就即可。10000000减1得01111111然后取反10000000
因为负数的补码是其绝对值取反,即10000000为最小负数的绝对值,而10000000的十进制表示是128,所以最小负数是-128
4、由此可以得出byte的取值范围是-128到+127

对于负数而言,需要掌握两种情况:知道其大小(十进制值),求补码;知道其补码,求其大小。

一个十进制负数转换成其二进制补码表示的时候,步骤为:

  负数—>正数(取绝对值)—->二进制补码—(末位减一,各位取反)>二进制原码

  -128          128                        1000 0000                 0111 1111               1000 0000

 

二进制补码-反码-原码「建议收藏」

 

二进制补码-反码-原码「建议收藏」

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155368.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月2日 上午9:36
下一篇 2022年7月2日 上午9:46


相关推荐

  • Windows下打包安装程序

    Windows下打包安装程序windows 下打包安装程序可以使用 NSIS 或者 Wix 其中 NSIS 生成的是 exe 的安装包 WiX 生成的是 msi 的安装包 个人认为使用 WiX 方法更好 Wix 全称 WindowsInsta 属于微软的一个开源项目 目标是使用 XML 语言灵活的定制具有各种功能的安装包 需要微软的 WindowsInsta 服务支持 Wix 生成的产品为 msi 文件 这种可执行文件与 exe 文件最大的不同为 它更底层 安装文件的同时可以对系统或者其他软件进行

    2026年3月20日
    1
  • Mac 电脑连上 wifi 却打不开网页的解决办法

    Mac 电脑连上 wifi 却打不开网页的解决办法系统偏好设置–>网络–>高级–>代理–>取消代理☑️

    2022年6月22日
    101
  • JavaSSM框架精选50道面试题

    JavaSSM框架精选50道面试题1 什么是 MVC 框架 传统 MVC 框架存在的问题是什么 MVC 框架是为了解决传统 MVC 模式 Jsp Servlet JavaBean 的一些问题而出现的框架 传统 MVC 模式存在问题 1 所有的 Servlet 和 Servlet 映射都要配置在 web xml 中 如果项目太大 web xml 就太庞大 并且不能实现模块化管理 2 Servlet 的主要功能就是接受参数 调用逻辑 跳转页面 比如像其

    2026年3月19日
    1
  • CCF-CSP认证历年真题解

    CCF-CSP认证历年真题解CSP认证考什么怎么考?CCF计算机职业资格认证的每一道试题都十分经典,覆盖现实世界中方方面面的问题。这个历年试题解主要使用C/C++语言编写,将逐步增加Python和Java的解题程序。程序中附有注释,力求解题思路清晰简洁,值得珍藏与模仿。逐题改写过程中,富文本编辑器写的博客将全部用Markdown编辑器改写。改写的第一题,都增加了Python和Java的解题程序。2021.04第22次:CCF202104-1灰度直方图(100分)【计数】CCF202104-2邻域均值(100分.

    2022年6月7日
    109
  • spring boot redis 缓存_redis本地缓存

    spring boot redis 缓存_redis本地缓存SpringBoot集成Redis缓存查询操作是应用中最常见的操作,如果每次查询都从MySQL中查询则会影响效率,通常需要引入缓存来实现查询性能的优化。缓存可以选择本地缓存,远程缓存或本地缓存结合远程缓存。本地缓存可以使用Guava或Caffeine提供的解决方案,而远程缓存则可以选择Redis这样的内存数据库。本文记录一下SpringBoot集成Redis做缓存的相关配置。1引入依赖引入相应Starter。<dependency><gr

    2025年12月10日
    10
  • pycharm python解释器找不到_pycharm解析器找不到?初学者搞了一下午快疯了

    pycharm python解释器找不到_pycharm解析器找不到?初学者搞了一下午快疯了时隔两年的修改 问题分析 安装了 python Pycharm 还找不到 Python 解释器 原因是系统环境变量中没有指出 Python exe 的位置 解决办法 找到你安装的 Python exe 所在的位置 将其添加至系统环境变量就好了 怎么添加系统环境变量 百度经验有很多教程 以下是原答案 我也是初学者 搞了一天了 头发蒙 不过好歹弄好了 我理解的 Python 解释器就是 Python exe 这个文件 当初安

    2026年3月27日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号