学习:原码-反码-补码

文章目录

  • 前提知识
    • 原码详解
    • 反码
    • 补码
  • 二进制负数的运算

前提知识

正数不需要进行原码反码补码一说,正数就是正数,我们原码反码补码是为了针对负数
(按道理来说其实根本不存在什么码,只有二进制机器码,不过是为了方便计算)

  • 原码

数值的二进制即为原码

  • 反码

将二进制位取反即可,即 0–>1, 1–>0

  • 补码

将原码取反码再加一即为补码

  • 移码

符号码+数值码 = 移码
这里的符号码和数值码在不同环境下又有不一样的叫法,暂且这个名字是最符号的

原码详解

原码是对应数值的二进制码

  • 整数原码

    • 定义
      在这里插入图片描述
    • 理解:大于0就没什么好说了,小于0为什么是2n - x ?
      比如:x = -0010 他的n=4,所以n表示的是二进制的位数,因此直接取n为2的阶可以比原二进制0010大一个位数,本质其实就是这个,用比该数值大一位的数字去进行减一个负数即加上这个数值,其实就是加一个符号位,即10000,又因为2n - x ,这时候就能看懂了,其实是为了用x小于0这个特性,然后再减去负数即加一个正数,这样就是把2n次幂加进x这个负数中去了,实现了1作为符号位区分出一个负数。(那么整数也是同理只不过用0作为符号位有时候可以不写)
  • 小数原码

    • 定义
      在这里插入图片描述

    理解:大于0也没什么好说的了,为什么小于0是用1-x?
    比如:-0.1101 比小数点高一位也就只有1了,而且永远是1,所以就是给负数加一个1符号位。
    举一反三:-1.1101,这时候我们这个是大于小数的,那么我们最高位应该是加在1的前面,
    即:1,1.1101,为了容易分辨,教材上都是用逗号对符号位区分,当然计算机中没有逗号,全部都是二进制,只是为了我们认为能分清。


上述解析纯纯原理,其实我们知道负数的原码在符号位上面是1来表示就行


反码

负数的反码符号位不参与反码,将数值位进行反码即可

  • 整数反码表示法:
    在这里插入图片描述
  • 小数反码表示法:
    在这里插入图片描述

补码

负数的符号不参与反码运算,对于两个负数的补码相加,如果溢出了,1会被丢弃掉。

  • 整数补码
    • 定义
      在这里插入图片描述
    • 理解:n一样是表示二进制的位数,为什么要n+1呢?
      原因是后面我们是2n+1 + x,因为x是负数,那么我们在这里采用的是加法,所以其实是减去一个正数,如果只选择高一位减去正数的话我们最高位就会被借位借走变成0,我们负数就不成立了,所以我们需要n+1,这时候就肯定保证了减走一个二进制后还能留下最高位,因为我们选择的是高两位数。
  • 小数补码
    • 定义
      在这里插入图片描述
    • 理解:其实学到这思考一下与原码定义和上面的整数补码定义就能想到了,我们无非就是用高一位或者高两位进行施法,那么在这里是补码,整数补码是用高两位,那么我们应该想到的是小数部分应该也是要用高两位进行借位留下最高位作为符号位,所以就是(因为x是负数):2 + x

二进制负数的运算

关于负数的二进制运算需要对负数取补码,然后补码之间进行运算,然而正数所有码都一样(不严格来说),所以只需要把负数取补码即可,然后就能正常的像正数一样运算了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142006.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

华为云云耀云服务器L实例评测|华为云上安装etcd

文章目录 华为云云耀云服务器L实例评测|华为云上安装etcd一、什么是etcd官方硬件建议 二、华为云主机准备三、etcd安装1. 安装预构建的二进制文件2. 从源代码构建 四、etcd服务注册与发现1. 配置etcd2. 使用systemctl 管理启动etcd服务3. 注册服务4. 发现服务 五、其…

ISE_ChipScope Pro的使用

1.ChipScope Pro Core Inserter 使用流程 在之前以及编译好的流水灯实验上进行学习 ChipScope的使用。 一、新建一个ChipScope 核 点击Next,然后在下一个框中选择 Finish,你就会在项目菜单中看到有XX.cdc核文件。 二、对核文件进行设置 右键“Synthesize – XST” …

最快的包管理器--pnpm创建vue项目完整步骤

1.用npm全局安装pnpm npm install -g pnpm 2.在要创建vue项目的包下进入cmd,输入: pnpm create vue 3.输入项目名字,选择Router,Pinia,ESLint,Prettier之后点确定 4.cd到创建好的项目 ,安装依赖 cd .\刚创建好的项目名称\ p…

怎样快速打开github.com

1访问这个网站很慢是因为有DNS污染,被一些别有用心的人搞了鬼了, 2还有一个重要原因是不同的DNS服务器解析的速度不一样。 1 建议设置dns地址为114.114.114.114.我觉得假设一个县城如果有一个DNS服务器的话,这个服务器很可能不会存储…

[linux]服务器挂代理提升下载权重速度

写在前面 这里主要以huggingface下载权重为例,介绍如何在linux中部署代理提升下载速度 实际操作 第一步:服务器安装clash文件 https://github.com/Dreamacro/clash/releases#下载clash链接第二步:使用自己的配置文件 将config.yaml替换掉…

前端项目练习(练习-003-webpack-01)

学习webpack前,首先,创建一个web-003项目,内容和web-002一样。(注意将package.json中的name改为web-003) 想想,我们开发Java 的时候,Maven帮我们做的主要是编译,打包等等内容。开发前…

Spring Cloud Alibaba Gateway 简单使用

文章目录 Spring Cloud Alibaba Gateway1.Gateway简介2. 流量网关和服务网关的区别3. Spring Cloud Gateway 网关的搭建3.1 Spring Cloud Gateway 配置项的说明3.2 依赖导入3.3 配置文件 Spring Cloud Alibaba Gateway 1.Gateway简介 Spring Cloud Gateway是一个基于Spring F…

计算机竞赛 深度学习乳腺癌分类

文章目录 1 前言2 前言3 数据集3.1 良性样本3.2 病变样本 4 开发环境5 代码实现5.1 实现流程5.2 部分代码实现5.2.1 导入库5.2.2 图像加载5.2.3 标记5.2.4 分组5.2.5 构建模型训练 6 分析指标6.1 精度,召回率和F1度量6.2 混淆矩阵 7 结果和结论8 最后 1 前言 &…

构建自己的物料解决方案——构建物料库,实现前端设计

01: 数据拦截简化数据获取流程 /** * 响应拦截器: * 服务端返回数据之后,前端 .then 之前被调用 */ service.interceptors.response.use((response) > {const { success, message, data } response.dataif (success) {return data}// TODO&#xff…

法规标准-UN R48标准解读

UN R48是做什么的? UN R48全名为关于安装照明和灯光标志装置的车辆认证的统一规定,主要描述了对各类灯具的布置要求及性能要求;其中涉及自动驾驶功能的仅有6.25章节【后方碰撞预警信号】,因此本文仅对此章节进行解读 功能要求 …

Python中的设计模式 -- 单例

迷途小书童 读完需要 2分钟 速读仅需 1 分钟 当我们谈到单例模式时,可以想象一个非常特殊的餐厅,这个餐厅只有一个桌子,无论多少人来用餐,都只能坐在这个桌子上。这个桌子就是餐厅的单例,它保证了整个餐厅中只有一个桌…

Element登录+注册

Element登录注册 1.1 定义1.3 完成用户注册登录界面搭建1.3.3 下载js依赖1.3.4 创建用户登录注册组件1.3.5 配置路由 二、数据交互2.1 数据导入2.3 安装引用相关模块 2.3.1 安装相关模块2.3.2 引用相关模块2.4 axios之get请求2.5 axios之post请求 四、注册 1.1 定义 ElementUI是…

bash中执行比较的几种方法

bash 脚本中的 test 命令用于检查表达式的有效性,检查命令或表达式为 true 或者 false。此外,它还可以用于检查文件的类型和权限。 如果命令或表达式有效,则 test 命令返回0,否则返回1。 使用 test 命令 test 命令的基本语法如…

腾讯mini项目-【指标监控服务重构】2023-08-29

今日已办 Collector 指标聚合 由于没有找到 Prometheus 官方提供的可以聚合指定时间区间内的聚合函数,所以自己对接Prometheus的api来聚合指定容器的cpu_avg、cpu_99th、mem_avg 实现成功后对接小组成员测试完提供的时间序列和相关容器,将数据记录在表格…

Qt/C++音视频开发56-udp推流和拉流/组播和单播推流

一、前言 之前已经实现了rtsp/rtmp推流,rtsp/rtmp/hls/flv/ws-flv/webrtc等拉流,这种一般都需要依赖一个独立的流媒体服务程序,有没有一种更便捷的方式不需要这种依赖,然后又能实现推拉流呢,当然有的那就是udpp推流&a…

前端项目练习(练习-004-webpack-02)

学习前,首先,创建一个web-004项目,内容和web-003一样。(注意将package.json中的name改为web-004) 前面的例子,成功将js文件打包到了dist中,但是我们有三个文件,css,js和h…

利用C++开发一个迷你的英文单词录入和测试小程序-增强功能

小玩具基本完成之后,在日常工作中,记录一些单词,然后定时再复习下,还真的有那么一点点用(毕竟自己做的小玩具)。 在使用过程中,遇到不认识的单词,总去翻译软件翻译,然后…

使用matlab产生二维动态曲线视频文件具体举例

使用matlab产生二维动态曲线视频文件举例 在进行有些函数变化过程时候,需要用到直观的动态显示,本博文将举例说明利用Matlab编程进行二维动态曲线的生成视频文件。 一、问题描述 利用matlab编程实现 y 1 s i n ( t ) , y 2 c o s ( t ) , y 3 s i …

安卓生成公钥和md5签名

安卓公钥和md5证书签名 大家好,最近需要备案app,用到了公钥和md5,MD5签名我倒是知道,然而对于公钥却一下子不知道了, 现在我讲一下我的流程。 首先是md5证书签名的查看, 生成了apk和签名.jks后&…

3D设计软件Rhinoceros 6 mac 犀牛6中文版功能特征

Rhinoceros Mac中文版是一款3D设计软件“犀牛”,在众多三维建模软件中,Rhinoceros mac因为其体积小、功能强大、对硬件要求低而广受欢迎,对于专业的3D设计人员来说它是一款非常不错的3D建模软件,Rhinoceros Mac中文版能轻易整合3D…