补码补码

原码、反码、补码以及补码是怎么来的 近日沉迷ACM不能自拔,恰巧碰到一个位运算的题目卡在了原理上,主要涉及了补码的问题。查了不少资料,看到了一些讲的很好的文章,但细读下来也存在一些问题。 回头翻看教科书,发现多数教科书也并未给出很好的解释。 这一部分内容在高校大一时的大学计算机基础有教授,但限于当时对进位制掌握不完全,编码也没有初步理解,因此多数人还是“满秩茫然”的状态。 这篇文是按照我的思路整理必要的概念和原理,希望对希望“... 阅读详情

哈哈,每次看到补码的问题,总要再去翻看一下原理,每次都要搜索,好累啊,我决定自己总结一遍,下次只看自己的笔记。瓦咔咔。。。


--------------------------------切入正题

计算机中的符号数有三种表示方法,即原码、反码和补码。三种表示方法均有符号位和数值位两部分,符号位都是用0表示“正”,用1表示“负”,而数值位,三种表示方法各不相同。

首先我们要知道计算机系统中存储数值时候使用补码表示。因为使用补码可以将符号位和数值位统一处理。此外补码和原码的换算是一样的,即补码的补码就是原码喽。

一、正数的补码和原码相同

例如+9 原码0000 1001 ,其补码还是0000 1001


二、负数的补码是将其二进制正数取反(包括符号位和数值位)加一

例如-5正数0000 0101 -->所有位取反 1111 1010 --->加一1111 1011

PS:记得大学上课时候,老师讲过一个简单求负数的补码方法,首先符号位不参与运算,因为为负数,故符号位肯定为1,其余的数值位,从右往左遇到第一个1不变其余全部取反。故-5就是将1_000 0101 从右遇到的第一个1不变,其余取反。即为1_111 1011

什么是补码 begin 本文中我们以八位数为例,来说明补码。 八位数中第一位是符号位,后面七个是数位。 符号位0表示正,1表示负。 a-b=a+b的补码,就跟当前8点,如果想调到5点,你可以减3,也可以加9。3的补码就是9。b的补码=模-b。 八位数的模是 28=1000000002^8=10000000028=100000000。 正数 整数的补码就是其自身,比如2,为00000010. 正数加法,直接加,如下: 3+2 =00000011+00000010 =00000101 =5 负数 负数以补码 阅读详情

相关推荐

KUKA .RSI 软件包

KUKA RSI软件包通过XML文件使得机器人与外部设备(传感器通讯)通讯成为了可能,但仍存在诸多限制,该模块最多允许9台设备进行连接,有限的IO口,匮乏的功能,并且需要投入大量精力琢磨相关说明文档。为此开发人员针对KUKA实时通讯,做了一些开源的接口使得上位机与机械臂的通讯更为简单。

huhu7777的博客 3290

原码,反码,补码

正数:三码合一 负数:以32位的-7为例 负数在计算机中是以补码形式存储,例如-7 7: 0000 0000 0000 0111 补码(反码+1) -7:1111 1111 1111 1001(fff9)

u014507083的博客 538

2026 最新实战教程:AI 重构开发全流程(从需求→上线→运维)

1)做什么系统2)技术栈3)功能模块4)部署要求plaintext我要做一个:待办事项(Todo)全栈应用技术栈:前端:React + TypeScript + Tailwind后端:Node.js + Express + MongoDB部署:Docker + 本地运行(后续可上云)功能:- 增删改查任务- 任务状态切换(完成/未完成)- 简单错误处理请按企业级标准生成:架构设计 + 全部代码 + 接口文档 + 启动命令。

qq_35779316的博客 1684

Java实现根据补码求其原数是多少

当温度低于 0 ℃ 时温度数据以补码的形式上传。温度:FF9F H(十六进制)= -97 => 温度 = -9.7℃。因为正数的补码就是其原码,所以这个问题简单来说就是。百度代码太少了,有更好方法的大佬可以指导指导👏。粗暴的实现如下,应该好理解。概念就不扯了,百度一大堆。还有一种取巧点的简单方法。

haojundd的博客 1702

[c语言]用辗转相除法求最大公约数,递归和不递归两种

在c语言的学习中必然会遇到求两个数之间的最大公约数的题目,那么对于其他经典方法,最简便快捷的方式就是利用辗转相除法 辗转相除法又叫做欧几里得算法,目的是为了求两个正整数的最大公约数 定理:gcd(a,b) = gcd(b ,a%b) //在这里用(a,b)表示a和b的最大公约数证明:a可以表示成a = kb + r,则r = a %b 假设d是a,b的一个公约数,则有 d|a, d|b,而r = a - kb,因此d|r //这里的"|"的意思是 :d是b的因数 ,d是a的因数 因此d...

ZZRBlogger的博客 1万+

华为OD机试双机位C卷-流浪地球(Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷【流浪地球】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,并提供在线OJ模拟做题。华为OD机试真题【流浪地球】。

qq_45776114的博客 3139

补码计算反推原码

补码计算反推原码

dandingwangzi的专栏 1390

Java语音革命:用代码打造永不疲倦的AI客服,让客户支持效率飙升300%!

客户支持领域常面临“薛定谔困境”,即无法预知客户来电的意图是投诉还是表扬。通过Java技术,尤其是语音识别和自然语言处理(NLP),可以有效解决这一问题。文章展示了如何利用Java代码构建“声纹量子引擎”,实现客户支持的自动化。核心技术包括录音与预处理、语音识别和语义理解。通过百度AI API和Stanford NLP,系统能够快速、准确地识别客户语音并理解其意图。数据表明,优化后的AI处理时间从15分钟缩短至18秒,语音识别准确率提升至98.5%,并发处理能力达到单实例1000+请求。这些技术显著提升了客

墨夶的博客 1034

c# 温湿度变送器传感器开发(二)

上一篇讲了如何从传感器中拿到数据,下面我们来分析下返回的数据,返回的数据格式如下 00 B0 D0 3F B2 51 01 03 04 01 13 02 FF 其中的第九位与第十位为温度值,正数的范围为16进制0X0000-0X7FFF,负数采用正数的补码方式传输,其范围为16进制0X8000-0XFFFF 如: 湿度上传16进制 0X0311,对应十进制785,表示78.5% 温度

风晴 4232

Python3+PCAN-USB基于PCAN-Basic二次开发实现上位机功能

一、环境搭建 1.概述 本文主要是通过Python3与CAN总线工具PCAN-USB基于官方PCAN-Basic库实现CAN总线消息读写功能。 2.PCANBasic.py和PCANBasic.dll下载地址 https://www.peak-system.com/fileadmin/media/files/pcan-basic.zip 3.Python安装 下载地址:https://www.p...

测试领域技术分享 5183

基于STM32L4XX 、HAL库的ATD5984步进电机驱动器驱动程序应用设计

一、简介: ATD5984是一款内部集成了译码器的微特步进电机 驱动器,能使双极步进电机以全、半、1/4、/1/8、1/16 和1/32步进模式工作。步进模式由逻辑输入管脚MSx选 择。其输出驱动能力达到28V±1.6A。 译码器是ATD5984易于使用的关键,通过STEP管脚 输入一个脉冲就可以使电机完成一次步进,省去了相序 表,高频控制线及复杂的编程接口,使其更适于没有复 杂的微处理器或微处理器负担过重的场合。 在步进操作期间,ATD5984的内部电路可以自动

PP_Cottage的博客 405

-1的源码、反码、补码

-1的补码为11111111(8bit) 过程 1.通常把一个数的最高为定义为符号位,用“0”表示正,用“1”表示负。 -1的原码=10000001 2.反码:对于负数,数符位为1,数符位不变,将数值位诸位取反为反码。 -1:的反码=11111110 3.补码:对于负数,数符位为1,数符位不变,将反码+1=补码。 -1:的补码=11111111 ...

qq_42359085的博客 3万+

[Python从零到壹] 十三.机器学习之聚类算法四万字总结全网首发(K-Means、BIRCH、树状聚类、MeanShift)

欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望

杨秀璋的专栏 2万+

补码的优点及补码公式

我们知道,n位二进制数能表示的数的个数肯定是偶数个(2的n次方),既然只有一个0,那正数和负数的个数肯定是不相等的(个数和为2^n-1)。正0的补码是原码本身(没有加1),负0的补码是原码的反码加1(有加1),所以二者之和不可能是0,即00000000+10000000不等于0,所以补码10000000肯定不再表示0。所以,10000001-1=10000000,这个结果正是前面讨论的-0的补码,它应该表示-128,这个数就是最小的负数。它们的共同点是都有符号位和数值位,最高位为符号位,其他位为数值位。

jjmhx的专栏 2367

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

原码、反码、补码、1的补码、2的补码

原码、反码、补码、1的补码、2的补码

听海边涛声 8335

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

关于补码的一些见解和求补码的三种方法

计算机系统的内部是以二进制形式存储数据。在java程序中输入的十进制数据都会被自动转换为二进制,Java内部也以二进制来进行数值运算,但返回的结果是十进制。在计算机系统中,数值一律采用二进制的补码来存储。二进制的最高位是符号位。0表示正数,1表示负数。正数的值是其本身,负数的值是最高位(符号位)不变,其他位逐位取反再加1。我们以四位二进制为例,来讲解一下四位二进制能表示的补码范围。首先在计算机...

吴玉婷的博客 2万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

补码是什么?补码有什么用?

首先我们来了解下补码的定义,在很多资料上说补码都是从原码说起,但实质上补码是有其定义的: 补码定义:计算机中二进制形式的补数。 这个定义是比较抽象的,下面我将举一些实际的例子来解释。 二进制形式:就是0和1组成的串,例如数字3的二进制形式是11,数字-9的二进制形式是11001。 补数:初中时我们学过互补角,两个角加起来等于180度,则称两个角互补。在日常生活中,将某物体顺时针旋转270度和逆时针旋转90度能达到同样的效果,把时钟里的分钟顺时针调整40分钟和逆时针调整20分钟,分针最后的位置是一样的。这时2

The_RedMaple的博客 1万+

补码一位乘和补码二位乘

补码一位乘 回顾原码的一位乘:原码一位乘是数值位之间的计算,计算之前需要对被乘数取绝对值,符号位单独处理;而补码乘法的符号位是计算过程中产生的,因此不需要对被乘数取绝对值。 补码的一位乘只讲比较法(Booth法) 原理: 被乘数和部分积均取2位符号位,因此乘数和被乘数均要在最高位扩位。补码扩位原则:正数补0,负数补1. 乘数取一位附加位,作为乘数的最后一位,在移动时作为最低位处理,初始化值为...

CaiYuxingzzz的博客 1万+

补码乘法,补码乘法计算详细解说

  1.补码与真值得转换公式    补码乘法因符号位参与运算,可以完成补码数的“直接”乘法,而不需要求补级。这种直接的方法排除了较慢的对2求补操作,因而大大加速了乘法过程。    首先说明与直接的补码乘法相联系数学特征。对于计算补码数的数值来说,一种较好的表示方法是使补码的位置数由一个带负权的符号和带正权的系数。今考虑一个定点补码整数[N]补=anan-1…a1a0,这里an是符号位。根据[N]补...

爱.NET 4万+

补码的秘密之一--补码的来源

关于补码的来源

做而论道的博客 4179

补码转化为原码,补码转化为负补码 的快速转换

前提知识: 1、一个负整数(或原码)与其补数(或补码)相加,和为模。 2、对一个整数的补码再求补码,等于该整数自身。 3、补码的正零与负零表示方法相同。 总之,正整数的补码是其二进制表示,与原码相同。求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1。 正整数的原码反码补码一样; 负整数的反码是除了原码符号位其他位全部取反,补码是反码加一。 备注:计算中主要采用的是补码,就是将减法计算变成加法计算,反码是求补码的中间状态此外。补码与原码相互转换,其运算过

fwk19840301的博客 5万+

关于二进制补码及补码加法的思考

文章目录前言一、生活中了解补码二、数字电路或系统中补码有什么作用?三、补码,原码,反码之间的转换1.例子四、补码加法运算1.异号补码相加2.同号补码相加总结 前言 笔者刚学数字电路,就在二进制补码处踩了许多坑,下面就来写一下我对二进制补码的感悟。 提示:以下是本篇文章正文内容,下面案例可供参考 一、生活中了解补码 首先展示一下求补码的公式N(补)=R^n-N 这里的N是原码,R是基数,n是位数,N(补)是补码 我们用时钟来举一个例子: 假如时钟要从0点转到3点,我们可以怎么转?首先,有两种方法:...

衛國同學的博客 8159

为什么补码的补码就是原码

对于一个有符号整数,其补码的计算方法是:正数的补码与原码相同;负数的补码是将原码除符号位外的每一位取反,然后在末位加1。正数:正数的原码、补码相同,所以补码的补码还是原码。负数:负数的补码是原码除符号位外各位取反再加1,对补码再进行除符号位外各位取反且末位加1的操作,就能还原得到原码。

weixin_51674321的博客 1447

补码是什么

补码是什么 2 的补码(2’s complement),以下简称补码。几乎所有的计算机都通过补码来表示有符号整数,在 C 语言中,数据类型 int 代表长度为 4-Bytes (32-bits) 的有符号数,可表示的范围为 [−231,231−1][-2^{31}, 2^{31} - 1][−231,231−1],其中正数部分的补码与我们的直觉相同,负数的补码形式需要一些转换,本文介绍补码的各种转...

wsc2111的博客 5985

补码运算

补码(twos complement)  1、在计算机系统中,数值一律用补码来表示(存储)。  主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补  码表示的数相加时,如果最高位(符号位)有进位,则进位被舍弃。  2、补码与原码的转换过程几乎是相同的。  求给定数值的补码表示分以下两种情况:  (1)正数的补码:与原码相同。 

nosmatch的专栏 4695

补码

一、 引言 +0的原码是00 00 00 00;反码是 00 00 00 00;补码是 00 00 00 00; -0的原码是80 00 00 00;反码是 FFFFFFFF;补码是 00 00 00 00; 用补码表示时,+0和-0是相同的,符合正常认知。 二、 解释 2.1、 基础 由此引出计算机中补码的表示规则:正数和零暂不讨论,需要额外注意负数的转换规则。 对于负...

仰望星空 6278
上一篇: 一张表告诉你Java的数据类型
下一篇: 数据溢出怎么办,别慌别慌,try_catch来帮忙
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值