计算机 原码、反码、补码(相互转化)

计算机 原码、反码、补码(相互转化)一 基本概念在计算机系统中 数值一律用补码来表示和存储 原因在于 使用补码 可以将符号位和数值域统一处理 同时 加法和减法也可以用补码统一处理 此外 补码与原码相互转换 其运算过程是相同的 不需要额外的硬件电路 原码 二进制表示 二进制首位是符号位 0 为正 1 为负 反码 正数 反码和原码一样 负数 符号位不变 其他各位取反 补码 正数 补码和原码一样 负数 反码末位加 1 有进位则进位 但不改变符号位二 举个例子 假设是字节长度为 8 位 正数 1

一、基本概念

在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统一处理;同时,加法和减法也可以用补码统一处理。此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

  1. 原码:二进制表示。二进制首位是符号位,0为正,1为负
  2. 反码正数,反码和原码一样;负数,符号位不变,其他各位取反
  3. 补码正数,补码和原码一样;负数,反码末位加1,有进位则进位,但不改变符号位

 

二、举个例子:(假设是字节长度为8位)

计算机 原码、反码、补码(相互转化)

 

三、注意:(总结一下就是,-127~127都是正常转换,只有-128一个特殊的只有补码)

  1. 八位字节的二进制转化的十进制的最大 正数 为 127(0111  1111)
  2. -127只能表示(原码1111  1111)(反码1000  0000)(补码1000  0001)
  3. 八位字节的二进制转化为十进制的最大 负数 为 -128 (1000  0000)
  4. +0和-0的补码是一样的。即 0的补码只有一种表示
  5. 所以为了避免面混淆,有了-0的原码,便不能有-128的原码反码,这是8位比特位位数限制决定的
  6. 补码能表示的数的个数中,比原码反码少了一个,所以补码可以多表示一个真值为-128的数

 

这里有一个很好的文案,可以看看:

https://www.cnblogs.com/flowerslip/p/5933833.html(关于 -128 ,+128,-0,+0,-1 的反码补码)

# 但是在(三.-128的补码为什么是1000 0000)的数学方法的证明那里有个正负好像有点问题

 

四、比如求解  -127+128 = -1

(两者补码想加,然后转成反码,再转成原码,在把这个二进制转成十进制)

补码相加:0111  1111  +  1000  0000 = 1111  1111

转成反码(末位-1):(1111  1111)–>  1111  1110

转成原码(除符号位之外按位取反):(1111  1110)–>  1000  0001

转成二进制:(1000  0001)–>  -1

 

 

 

 

 

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

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

(0)
上一篇 2026年3月17日 上午10:49
下一篇 2026年3月17日 上午10:49


相关推荐

  • “项目经理”都会的软件开发七大过程模型

    “项目经理”都会的软件开发七大过程模型目录一 瀑布模型二 喷泉模型三 快速原型模型四 增量模型五 螺旋模型六 Rational 统一模型七 微软过程模型 Hello 你好呀 我是灰小猿 一个超会写 bug 的程序猿 今天来和大家分享一下在进行系统的软件开发的过程中常用的七大软件过程模型 熟悉软件开发常用的几种模型方法 助力每一个程序员小伙伴都可以尽早成为项目经理哟 一 瀑布模型瀑布模型严格遵循软件生命周期各阶段的固定顺序 计划 分析 设计 编程 训试和维护 上一阶段完成后才能进入到下一阶段 整个模型就像

    2025年11月26日
    7
  • java 微服务 优势_什么是微服务?微服务优缺点分析

    java 微服务 优势_什么是微服务?微服务优缺点分析微服务是近些年流行起来的热门概念 与传统的的 IT 架构相比 它有许多的优势 那么到底什么是微服务呢 本文将对微服务优缺点进行分析 让大家全面的了解微服务 一 什么是微服务在介绍微服务时 首先得先理解什么是微服务 顾名思义 微服务得从两个方面去理解 什么是 微 什么是 服务 微 狭义来讲就是体积小 著名的 2pizza 团队 很好的诠释了这一解释 2pizza 团队最早是亚马逊 CEOBe

    2026年3月18日
    2
  • vue阻止冒泡

    vue阻止冒泡vue 阻止冒泡在事件后面加上 stop el buttontype primary size small click stop editgGift 编辑 el buttontype primary size small click stop editgGift

    2026年1月26日
    2
  • 获取计算机用户名,java获取计算机用户名

    获取计算机用户名,java获取计算机用户名NetworkInfo()Dimwshnetwork,infoAsStringSetwshnetwork=CreateObject(“WScript.Network”)’获取当前电脑用户信息一、用户名命名规范:总纲:用户名规范包括通用规范和特殊原则。A.通用规范:a.用户名只能由字母、数字和下划线组成,且必须以字母开头。不得出…1、“姓”的全拼+“ZhongS”…

    2022年10月15日
    6
  • ImageView(仿QQ图片查看器)

    ImageView(仿QQ图片查看器)程序运行截图:使用方法:1、直接把图像文件拖到图标上显示2、通过命令行方式,示例:ImageView.exe”带全路径的图像文件名称”3、打开ImageView.exe,将图像文件拖到窗口上显示未实现功能:1、右下角比例窗口2、最大化后的窗口底部图片选取条3、打开/关闭窗口动画效果4、优化GDI+支持的图像格式判断逻辑5、不使用图片

    2022年8月10日
    19
  • winForm连接数据库(sqlserver2005)

    帮同学搞个课程设计winform连接sqlserver2005具体方法:.添加App.config文件2.在App.config文件中添加节点3.在项目Reference中添加引用Syste

    2021年12月27日
    42

发表回复

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

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