原码,补码,反码

原码、反码、补码 原码:简单但有两个零。反码:解决了一部分问题,但仍有两个零。补码:最常用、最有效,只有一个零,简化了计算机的加减法运算。计算机内部广泛使用补码表示有符号整数,因为它简化了硬件设计和运算处理。了解这些概念有助于理解计算机的底层运算机制和一些算法的实现原理。 阅读详情

一个数在计算机中是以二进制数表示形式存在的,  这个二进制数称为机器数,其值称为真值。

符号数和无符号数是针对符号出现的两种机器数表示方法。同一个二进制数,作为符号数和无符号数其真值是不同的(这里只关

注有符号数)。符号数如:    char, short ,int, long等类型的变量。

定点数和浮点数是针对小数点出现的两种机器数表示方法。浮点数如:double,float

在计算机内,有符号数有3种表示法:原码、反码和补码。只有符号数才有原码, 反码, 补码

(1)原码

         A:所谓原码就是二进制数的有符号表示法,即最高位为符号位,

                  “0”表示正,“1”表示负,其余位表示数值的大小。  以byte类型的8字节二进制举例         

                   举例:               符号位               数值位

                    +7                        0                     0000111

                    -7                         1                     0000111

         B:原码不能直接参加运算,可能会出错。例如数学上,1+(-1)=0,而在二进制中原码

                   00000001+10000001=10000010,换算成十进制为-2。显然出错了。

(2)反码

A:正数 与原码相同

                   B:负数 符号位不变,数值位按位取反,0变1,1变0。

                   举例:               符号位               数值位

                            +7               0                     0000111

                            -7                1                     1111000

(3)补码

在计算机中,数值一律用补码来表示(存储)。

主要原因:使用补码,可以将符号位和其它位统一处理;同时,减法也可按加法来处理。另外,两个用补码表示的数相加时,如

果最高位(符号位)有进位,则进位被舍弃。

A:正数 与原码相同

B:负数 反码加1。

                   举例:               符号位               数值位

                     +7                        0                   0000111

                     -7                        1                    1111001

联系到byte类型的数据表数范围是[-128, 127],而不是最大值11111111=127,最小值01111111=-127,那么-128是怎么表示的呢

-128没有原码反码,其实是[00000000]表示正0,而0是无符号的,负0即10000000实际上就是表示的-128,它的得来方式:

(-1) + (-127) = [1000 0001]原 + [1111 1111]原 = [1111 1111]补 + [1000 0001]补 = [1000 0000]补

  -1-127的结果应该是-128, 在用补码运算的结果中, [1000 0000]补 就是-128. 但是注意因为实际上是使用以前的-0的补码来表

示-128, 所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000

0000]原, 这是不正确的)。

使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是

为什么8字节二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127]。

同理,其他几个数据类型,如short16字节表数范围 [-32768,32767 ](2的15次方),int32字节

表数范围[-2147483648,2147483647](2的31次方),也都是用所谓的负0表示最左的边界数,

同一个数字,如-128,定义成不同数据类型,其存储时的补码肯定也是不一样的。

对于正数,原码补码反码都是一致的。负数的比较麻烦一些

Integer,Long等这些包装类中,提供了

* Integer.toBinaryString(i)方法:

* 返回将该值转换为二进制补码形式的无前导 0的 ASCII 数字字符串,

* 例 7 ---> 111 ,-7 ---> 11...1001(中间28个1)

原码反码补码的概念,以及原码反码的表示形式 本文主要讲解计算机的原码, 反码和补码.的概念,以及原码反码的表示形式,以及原码反码补码之前如何相互转换,还有计算机中数字是怎么样存储的。 阅读详情

相关推荐

全国行政区划数据(含经纬度边界)

全国行政区划数据(含经纬度边界)

有符号数的二进制表示法、加减法、补码

转载:http://blog.sina.com.cn/s/blog_6f5a79c90102w62s.html 有符号数的表示法、加减法、补码 摘要:本文将会说明有符号数的表示方法,有符号数正负数之间的跳变,有符号负数的加减法,为什么采用补码等方面进行分析。 我是学过计算机原理的,也有有符号数和无符号数的概念,以及正码、反码、补码的概念。可是我今天在看C++primer plus时仍然对讲解的有符号数之间的跳变搞蒙了。原因是我只是有了概念,当初学习没有深入的去问为什么计算机会这么处理有符号的数据。那么

hocker_white的博客 1万+

ArduPilot飞控系统代码解读及架构分析

ArduPilot飞控系统是一个复杂而强大的系统,通过模块化设计和分层架构,实现了灵活的飞行控制功能。模块化设计: 各个功能模块相对独立,便于维护和扩展多种飞行模式: 满足不同的飞行需求强大的控制算法: 实现稳定的姿态和位置控制完善的安全机制: 保障飞行安全丰富的配置选项: 通过参数系统实现高度可定制性这种架构使ArduPilot能够适应从简单的多旋翼到复杂的自主飞行器等各种应用场景。类结构分析:Mode基类 (mode.h/mode.cpp)

fengforky的专栏 3020

原码、补码和反码

数的表示{ 原码: 反码:(正数不变;负数按位取反,符号位不变。) 补码:(正数不变;负数:反码+1) } 如果字长为8位,从0~7。从右到左数,最高位(第七位)是符号位。 0为正,1为负。 最大:0111111 (2的7次幂减一) 最小:1000000 (负的2的7次幂) 例子1 17的原码、补码和反码 17用二进制表示:10001;一共八位补上为:00010001(原码) 补码和反码均为00010001 例子二 写出负17的原码、补码和反码。 最高位为1;17的二进制表示10001,所以原

weixin_50664767的博客 4495

ffmpeg(一) ffmpeg+QT开发环境搭建

(exe 程序编译的时候只需要包含 xxx.dll.a 静态导入库,运行的时候才需要 xxx.dll 文件)这个 .pro 文件的配置,是指导程序编译的时候,可以找到对应的动态库。值得一提的是,在Windows中,静态链接库(Static Link Library)的扩展名也是.lib、.dll.a。其实只要你掌握了FFmpeg,也可以很快上手其他音视频开发库,因为底层原理都是一样的,你最终操作的都是一样的数据,比如MP3、MP4文件。导入库:不包含函数的具体实现代码(函数的具体实现代码存储在dll中)

小道士写程序 8204

手把手教你用ZLMediaKit搭建WebRTC直播:本地推流与播放实战

本文详细介绍了如何使用ZLMediaKit搭建WebRTC直播系统,涵盖从环境准备、编译部署、SSL证书配置到本地推流与播放的完整实战流程。通过一步步的指导,帮助开发者快速掌握基于ZLMediaKit的WebRTC推拉流技术,构建低延迟的实时音视频应用。

weixin_28842367的博客 348

计算机组成原理——数据的表示的运算の选择题整理

1、下列各种数制的数中,最小的数是()A、(101001)B、(101001)C、(52)D、(233)解析选B对于A,1+2+2=1+8+32=41(十进制)对于B,(101001)=>0010=2,1001=9=>29(十进制)对于C,2+5*8=42(十进制)对于D,3+3*16+2*16=3+48+258=309(十进制)......

王王仙贝的博客 7960

图相似度模型(论文篇)

图相似度模型

weixin_43702653的博客 5749

【题目】什么是原码、反码和补码?它们的取值范围是多少?

1、原码:就是符号位加上真值的绝对值,即用第一位表示符号,其余位表示值。n位二进制原码范围为-2(n-1)-1~+2(n-1)-1。 2、反码:正数的反码是其本身 负数的反码是在其原码的基础上, 符号位不变,其余各个位取反。n位二进制反码范围为-2(n-1)-1~+2(n-1)-1。 3、补码:正数的补码就是其本身 负数的补码是在其原码的基础上, 符号位不变, 其余各位取反,最后加上1。n位二进制...

漆黑梦工厂 1万+

Qwen3.6-27B 本地部署踩坑实录:两块 4090 折腾一天的真实记录

《Qwen3.6-27B稠密模型部署实战》摘要:本文记录了在双4090(48GB)环境下部署Qwen3.6-27B-FP8量化模型的全过程。重点解决vLLM服务启动时transformers版本不兼容问题,推荐通过构建自定义Docker镜像升级依赖。详细讲解了关键参数配置,包括128K上下文长度保持、MTP推测解码加速等技术细节,并给出显存优化建议。实测表明该稠密模型在27B参数量级下编程能力超越上一代397B MoE模型,单卡即可流畅运行FP8版本,输出速度达90token/s,是开发者理想的编程助手。文

Fzuim的博客 2768

手把手教你学Simulink--基于多能源系统协同控制的复杂场景实例:氢燃料电池+锂电池混合动力电动汽车能量管理仿真

本文介绍了基于Simulink的氢燃料电池与锂电池混合动力电动汽车能量管理系统的建模与仿真方法。系统包含驾驶循环输入、燃料电池子系统、锂电池子系统、能量管理、电机驱动等模块,通过协同控制优化能源分配。详细说明了从模型创建到各子系统设置的7个步骤,并提供了MATLAB代码示例。该仿真可评估不同工况下的系统响应速度、能量利用效率和电池寿命等性能指标,为混合动力汽车的能量管理策略设计和优化提供参考。

MHD0815的博客 239

Java 数字边界表示问题

Java 数字二进制表示中 最高位为 1 表示 负数,为 0 表示 整正数 计算机的 加减法运算 是以 补码 的 加法 运算实现的 Java 中负数(除了负数的最小值)用补码表示(负数的补码计算规则为,符号位不变,其他位 取反,再加1),0 和 正数用也是用补码表示(0和正数,原码、反码、补码相同) 负数的最小值,用的是原码表示,即正数的最大值加1 例如: Java 中byte 数据类型 大...

4911071420313 1001

【100%通过率】华为OD机试真题 Java&Go 实现【查找单入口空闲区域】【2022.11 Q4 新题】

给定一个 m xn 的矩阵,由若干字符 和0构成,X表示该处已被占据,0"表示该处空闲,请找到最大的单入口空闲区域.解释:空闲区域是由连通的O组成的区域,位于边界的0可以构成入口,单入口空闲区域即有目只有一个位于边界的0作为入口的由连通的'O"组成的区域。 如果两个元素在水平或垂直方向相邻,则称它们是“连通”的。

MISAYAONE的博客 2万+

原码, 反码, 补码 详解

原码, 反码, 补码 详解 本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的

weixin_45839498的博客 2859

Vue - 简约大气 404 页面

效果图 实现代码 复制即可。 <template> <div> <div class="error"> <!-- 图片可保存到本地 --> <img src="https://img-blog.csdnimg.cn/20210715111039922.png"> <p>抱歉!你访问的页面不存在或已删除 :( </p> <span class="back" @click="go(

🏆 前端领域优质创作者 3371

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

认识原码反码补码

原反补码

2202_75357702的博客 1735

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

原码、反码、补码的关系

在了解原码、反码和补码前需要先了解机器数和真值。 一、机器数和真值 1、机器数 一个数在计算机中的二进制表现形式称为这个数的机器数。在机器数中,一个数的最高位是符号位。例如:十进制中的 5 转为机器数就是 0000 0101,-5转为机器数就是 1000 0101。 2、真值 因为最高位是符号位,所以一个数的机器数并不能代表他的真值。例如1000 0101的最高位1代表负值,其真正的数值是-5,而...

宸宸的博客 3万+

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

原码、补码、反码的关系

一. 机器数和真值 在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念. 1、机器数 一个数在计算机中的二进制表示形式, 叫做这个数的机器数。机器数是带符号的,在计算机用一个数的最高位存放符号, 正数为0, 负数为1. 比如,十进制中的数 +3 ,计算机字长为8位,转换成二进制就是00000011。如果是 -3 ,就是 10000011 。 那么,这里的 00000011 和 10000011 就是机器数。 2、真值 因为第一位是符号位,所以机器数的形式值就不等于真正的数值。例如.

leo187的博客 1万+

原码、反码及补码

任何存储于计算机中的数据,其本质都是以二进制码存储。计算机的运算器只有加法运算器。所以在计算机中没办法直接做减法。 从硬件的角度来说正数+正数、负数+负数都是可以通过加法器直接相加,只有正数加负数才算是减法。原码、反码及补码的产生过程就是为了解决计算机做减法和引入符号位的问题。

KEEP CODING 5203

原码 反码 补码

计算机基础知识学习之原码 反码 补码

weixin_41043617的博客 1177

原码、反码、补码及用途

原码、反码、补码及用途 反码(Ones' Complement) 概念: 反码是通过对原码的数值部分逐位取反(0变1,1变0)得到的。 正数的反码和原码相同。 负数的反码是其原码除符号位外所有位取反。 补码(Two's Complement) 概念: 补码是反码加1得到的。 正数的补码和原码相同。 负数的补码是其反码加1。

热土程序园,利他愉己~ 2261

原码、反码、补码的相互转换

首先,正数的原码,反码,补码都是相同的。 所以,这里讨论负数的原码,反码,补码的相互转化问题。 1、负数原码和反码的相互转化 负数原码转化为反码:符号位不变,数值位按位取反。 如: 原码 1100 0010 反码 1011 1101 负数反码转化为原码:符号位不变,数值位按位取反。 如: 反码 1011 1101 原码 1100 0010 2、负数反码和补码的相互转化 负数反码转化为补码:末尾...

qq_38236355的博客 5705

原码、补码和反码之间的转换

在开始之前首先明确3个概念: 1、正数的原码、补码和反码都是一样的。 2、计算机中是用补码来表示数字的二进制的。 3、二进制的最高位(第一位)是符号位,0表示正数,1表示负数。 下面以一些简单的例子来介绍原码、反码和补码。采用8位二进制来进行说明即:0000 0000; 原码 [12]原 = 0000 1100, ...

VICTOR_fusheng的博客 5635
上一篇: 数组的初始化 array initializer is not allowed here
下一篇: 集合源码解读----addAll方法
MrMoving
博客等级 码龄10年 54粉丝 145原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值