当前位置: 首页 > news >正文

【计算机专业漫谈】【计算机系统基础学习笔记】W2-2-2 模运算系统和补码表示

利用空档期时间学习一下计算机系统基础,以前对这些知识只停留在应试层面,今天终于能详细理解一下了。参考课程为南京大学袁春风老师的计算机系统基础MOOC,参考书籍也是袁老师的教材,这是我的听课+自查资料整理后的笔记

补码表示法

补码表示可以实现加减运算的统一,即用加法来实现减法运算。在计算机中,补码用来表示带符号整数。补码表示法也称“2-补码”( two’s complement)表示法,由符号位后跟上真值的模2"补码构成,因此,在介绍补码概念之前,先讲一下有关模运算的概念。

模运算(modular运算)

在一个模运算系统中,一个数与它除以“模”后的余数等价。在模运算系统中,若 A , B , M A,B,M A,B,M满足下列关系: A = B + K × M ( K 为整数) A=B+K\times M(K为整数) A=B+K×M(K为整数),则记为 A ≡ B ( m o d M ) A\equiv B(modM) AB(modM),即 A , B A,B A,B各除以 M M M后的余数相同,故称 B B B A A A为模 M M M同余。现实世界中的模运算系统比如:时钟是一种模12系统

假定钟表时针指向10点,要将它拨向6点, 则有两种拨法:

  • 倒拨4格: 10 − 4 = 6 10- 4 = 6 104=6
  • 顺拨8格: 10 + 8 = 18 ≡ 6 ( m o d 12 ) 10+8 = 18 ≡ 6(mod 12) 10+8=186(mod12)

模12系统中: 10 − 4 ≡ 10 + 8 ( m o d 12 ) 10- 4 ≡ 10+8(mod 12) 10410+8(mod12). 则,称8是- 4对模12的补码 (即:- 4的模12补码等于8)。同样有 -3 ≡ 9 (mod 12) , , -5 ≡ 7 (mod 12)$等
【结论1】一个负数的补码等于模减该负数的绝对值。比如-5的补码,模 12 − ∣ − 5 ∣ = 7 12-|-5|=7 125∣=7,所以-5的补码是7
【结论2】对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替,比如模12系统中, 10 − 4 = 10 + ( − 4 ) 的补码 10-4 = 10 +(-4)的补码 104=10+(4)的补码
12 − ∣ − 4 ∣ = 8 12-|-4|=8 124∣=8,所以-4的补码是8
10 − 4 ≡ 10 + 8 10-4 ≡ 10 + 8 10410+8

补码(2’s complement)的表示

现实世界的模运算系统举例
【例】“钟表”模运算系统,假定时针只能顺拨,从10点倒拨4格后是几点?
【解】 10 − 4 = 10 + ( 12 − 4 ) = 10 + 8 = 6 ( m o d 12 ) 10- 4 = 10+(12- 4) = 10+8 = 6(mod 12) 104=10+(124)=10+8=6(mod12)

【例】“4位十进制数” 模运算系统,假定算盘只有四档,且只能做加法,则在算盘上计算9828-1928等于多少?
【解】由结论可知:

【结论2】对于某一确定的模,某数减去小于模的另一数,总可以用该数加上另一数负数的补码来代替

模为 1 0 4 10^{4} 104,则 9828 − 1928 = 9828 + ( 1 0 4 − 1928 ) = 9828 + 9072 = < 1 > 7900 = 7900 ( m o d 1 0 4 ) 9828-1928=9828+(10^{4}-1928)=9828+9072=<1>7900=7900(mod 10^{4}) 98281928=9828+(1041928)=9828+9072=<1>7900=7900(mod104),取模即只留余数,高位<1>被丢弃!相当于只有低4位留在算盘上。

关于-1928的补码,可以不用这么复杂得求出,按位取反改为加法(正数)末位加1即可,在十进制数中(0,1,2,3,4,5,6,7,8,9),0的反数是9,1的反数是8,2的反数是7,3的反数是6,4的反数是5,按中心对称互相对应,由上述规则,-1928的按位取反改为加法(正数)末位加1的结果是8071+1=8072

计算机中的运算器是模运算系统

计算机是8位二进制加法器模运算系统
【例】计算 0111 1111 - 0100 0000
【解】0111 1111B - 0100 0000B相当于0111 1111B + 0100 0000B的补码
0100 0000B按位取反加1为1011 1111B + 0000 0001B=1100 0000B
则0111 1111B - 0100 0000B = 0111 1111B - 1100 0000B= <1> 0011 1111B,<1>被丢弃,只留余数,即结果为0011 1111B
【结论】一个负数的补码等于将对应正数补码各位取反、末位加一。

运算器适合用补码表示和运算

运算器只有有限位,假设为n位,则运算结果只能保留低n位,故可看成是个只有n档的二进制算盘,因此,其模为 2 n 2^{n} 2n
1

补码的定义

根据上述同余概念和数的互补关系,可引出补码的表示:正数的补码符号为0,数值部分是它本身;负数的补码等于模与该负数绝对值之差。因此,数 X T X_{T} XT的补码可用如下公式表示:
(1)当 X T X_{T} XT为正数时, [ X T ] 补 = X T = M + X T ( m o d M ) [X_{T}]_{补}=X_{T}=M+X_{T}(mod\space M) [XT]=XT=M+XT(mod M)
(2)当 X T X_{T} XT为负数时, [ X T ] 补 = M − ∣ X T ∣ = M + X T ( m o d M ) [X_{T}]_{补}=M-|X_{T}|=M+X_{T}(mod\space M) [XT]=MXT=M+XT(mod M)
综合(1)和(2),得到以下结论:对于任意一个数 X T X_{T} XT [ X T ] 补 = M + X T ( m o d M ) [X_{T}]_{补}=M+X_{T}(mod\space M) [XT]=M+XT(mod M)
对于具有一位符号位和 n − 1 n-1 n1位数值位的 n n n位二进制正数的补码来说,其补码定义如下:
[ X T ] 补 = 2 n + X T ( − 2 n − 1 ≤ X T < 2 n − 1 , m o d 2 n ) [X_{T}]_{补}=2^{n}+X_{T}(-2^{n-1}\le X_{T}<2^{n-1}, mod\space 2^{n}) [XT]=2n+XT(2n1XT<2n1,mod 2n)
【注】用大白话解释上面的理论就是,对于二进制数,正数的补码就是原码,负数的补码是按位取反后再加1.

求特殊数的补码

2

相关文章:

【计算机专业漫谈】【计算机系统基础学习笔记】W2-2-2 模运算系统和补码表示

利用空档期时间学习一下计算机系统基础&#xff0c;以前对这些知识只停留在应试层面&#xff0c;今天终于能详细理解一下了。参考课程为南京大学袁春风老师的计算机系统基础MOOC&#xff0c;参考书籍也是袁老师的教材&#xff0c;这是我的听课自查资料整理后的笔记 补码表示法…...

vue概述

vue2和vue3的区别 vue2和vue3区别 NOvue2vue31 optinos Api写法 比较分散 Compostiton Api 代码集 2重写数序双向绑定通过Object.defineProperty&#xff08;&#xff09;实现 基于Proxy实现 对数组有了更好的支持 3Fragments 1&#xff0c;在template中只能一个div 2&#xf…...

SpringCloud-OpenFeign案例实战

关于Spring Cloud Open Feign的介绍可以参考这两篇博客 OpenFeign服务接口调用 使用Feign作为服务消费者 本博客参考gitee开源项目代码&#xff0c;结合自己的理解&#xff0c;记录下微服务场景下的使用。Talk is cheap. Show me the code&#xff01; 一、项目结构 这里使用…...

ACM - 数学 - 提高(还没学多少)

ACM - 数学 练习题 一、数论1、分解质因数 &#xff1a;AcWing 197. 阶乘分解2、求约数个数&#xff08;1&#xff09;AcWing 1294. 樱花 &#xff08;求 n&#xff01;约数个数之和&#xff09;&#xff08;2&#xff09;AcWing 198. 反素数 &#xff08;求 1 ~ N 中约数最多的…...

JavaScript class和继承的原理

&#xff08;对于不屈不挠的人来说&#xff0c;没有失败这回事。——俾斯麦&#xff09; class 相关链接 MDN链接 有关类的详细描述 关于构造函数&#xff0c;原型和原型链的说明 类的概述 类是用于创建对象的模板。他们用代码封装数据以处理该数据。JS 中的类建立在原型上…...

Playwright-python 自动化测试【Anaconda】环境配置

第一步&#xff1a;Anaconda的安装 安装Anaconda的好处&#xff0c;比prenv网速快&#xff0c;并且拥有独立的python环境&#xff0c;再也不用烦恼用哪个python好了。 Anaconda的下载页参见官网下载&#xff0c;Linux、Mac、Windows均支持。 https://mirrors.tuna.tsinghua.ed…...

攻防世界-web-simple js

题目描述&#xff1a;小宁发现了一个网页&#xff0c;但却一直输不对密码。(Flag格式为 Cyberpeace{xxxxxxxxx} ) 打开链接&#xff1a; 然后我们会发现不管我们输入什么密码&#xff0c;发现是都是这样的报错 1. 先用bp抓包看看&#xff0c;可以抓到这样的一串js脚本 看不懂…...

【SpringCloud】初始微服务

目录 一、单体架构 1、概念 2、优点 3、缺点 二、分布式架构 1、概念 2、优点 3、缺点 三、微服务 1、概念 2、优点 3、缺点 四、微服务技术对比 五、SpringCloud 六、服务拆分 1、注意事项 2、服务远程调用 一、单体架构 1、概念 业务的所有功能都集中到一个…...

均摊时间复杂度

均摊时间复杂度&#xff0c;它对应的分析方法&#xff0c;摊还分析&#xff08;或者叫平摊分析&#xff09; 均摊时间复杂度应用的场景比它更加特殊、更加有限 // array表示一个长度为n的数组// 代码中的array.length就等于nint[] array new int[n];int count 0;void insert…...

夏驰和徐策的解决数学问题思路——反证法

反证法是一种证明方法&#xff0c;它的基本思路是通过假设某个结论不成立&#xff0c;然后构造出一个矛盾的情况来推导出原先假设的结论是成立的。 具体来说&#xff0c;反证法一般包含以下步骤&#xff1a; 1. 假设所要证明的命题不成立。 2. 通过这个假设&#xff0c;构造…...

面向开发人员的 ChatGPT 提示词教程 - ChatGPT Prompt Engineering for Developers

面向开发人员的 ChatGPT 提示词教程 - ChatGPT Prompt Engineering for Developers 1. 指南(原文: Guidelines)1-1. 提示的指南(原文: Guidelines for Prompting)1-2. 配置1-3. 提示语原则(原文: Prompting Principles)原则 1: 写出清晰而具体的指示(原文: Write clear and spe…...

虹科方案|使用 HK-TRUENAS支持媒体和娱乐工作流程-1

一、摘要 开发和交付能够随时随地触及受众的媒体内容变得越来越重要和复杂。 在当今高度互联、娱乐驱动的世界中&#xff0c;媒体和娱乐 (M&E) 公司需要保持竞争力才能取得成功。 这些组织需要制作各种不同格式的信息和娱乐内容&#xff0c;以便在移动设备、台式机、工作站…...

DDR5内存彻底白菜价,国外大厂却整出了比着火更离谱的骚操作

今年的 PC 硬件市场&#xff0c;似乎出现了明显两极分化现象。 一边是 N、A 两家新显卡价格高高在上&#xff0c;摆明了不坑穷人。 另一边固态硬盘、内存条又在疯狂互卷不断杀价。 四五百元的 2TB SSD&#xff0c;二百元的 16G 内存条早已见怪不怪。 要说面世多年的 PCIe 3.0…...

Linux网络——Shell编程之函数

Linux网络——Shell编程之函数 一、概述二、定义函数的格式1.格式一2.格式二 三、函数的查看和删除1.查看 declare2.删除 declare 四、函数的返回值1.return 返回值2.echo 返回值 五、函数的参数传入与变量范围1.函数的传参2.函数变量的作用范围 六、函数的应用1.阶乘2.递归目录…...

GQCNN+PointNetGPD思路和问题--chatGPT

有很多算法是通过神经网络来预测机械臂抓手的抓取位置&#xff0c;其中一些算法需要点云数据作为输入&#xff0c;例如&#xff1a; PointNetGPD&#xff1a;PointNetGPD是一个端到端的基于点云的抓取姿态检测算法。它使用了一个PointNet架构来处理点云输入&#xff0c;并输出每…...

Mysql索引(2):索引结构

1 概述 MySQL的索引是在存储引擎层实现的&#xff0c;不同的存储引擎有不同的索引结构&#xff0c;主要包含以下几种&#xff1a; 索引结构描述BTree索最常见的索引类型&#xff0c;大部分引擎都支持 B 树索引 Hash索引 底层数据结构是用哈希表实现的, 只有精确匹配索引列的…...

Spring框架介绍和应用实践

Spring是一个开源的Java企业应用开发框架&#xff0c;它通过依赖注入和面向切面编程等技术实现了轻量级、松散耦合、可测试和可扩展的应用开发。本文将介绍Spring框架的基本原理和核心功能&#xff0c;以及在实际项目中如何使用Spring框架进行应用开发。 Spring框架基本原理 …...

IO 流学习总结

一&#xff1a;IO 流的概述 1. 什么是 IO 流&#xff1f; 存储和读取数据的解决方法 I&#xff1a;input O&#xff1a;output 流&#xff1a;像水流一样传输数据 2. IO 流的作用&#xff1f; 用于读写数据&#xff08;本地文件&#xff0c;网络&#xff09; 3. IO 流按…...

PowerToys——免费、强大、高效的微软官方效率提升工具集,办公学习宝藏软件

名人说:博观而约取,厚积而薄发。——宋苏轼 Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、简单介绍1、PowToys是什么?2、它的功能有哪些?二、下载安装三、功能示例1、始终置顶2、唤醒3、颜色选取器(取色)4、FancyZones(窗口布局)5、File Locksmith6、…...

【C++】 类基础汇总(类封装,构造、析构函数...)

目录 前言 正文 类封装 为什么要进行类封装 概念 访问修饰符 构造函数 概念 特点 析构函数 概念 特点 再谈面向过程与面向对象 面向过程 代码举例 面向对象 代码举例 结语 下期预告 前言 在学习过【C语言进阶C】 C基础--让你丝滑的从C语言进阶到C 之后&am…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

redis和redission的区别

Redis 和 Redisson 是两个密切相关但又本质不同的技术&#xff0c;它们扮演着完全不同的角色&#xff1a; Redis: 内存数据库/数据结构存储 本质&#xff1a; 它是一个开源的、高性能的、基于内存的 键值存储数据库。它也可以将数据持久化到磁盘。 核心功能&#xff1a; 提供丰…...

k8s从入门到放弃之HPA控制器

k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率&#xff08;或其他自定义指标&#xff09;来调整这些对象的规模&#xff0c;从而帮助应用程序在负…...

ubuntu22.04 安装docker 和docker-compose

首先你要确保没有docker环境或者使用命令删掉docker sudo apt-get remove docker docker-engine docker.io containerd runc安装docker 更新软件环境 sudo apt update sudo apt upgrade下载docker依赖和GPG 密钥 # 依赖 apt-get install ca-certificates curl gnupg lsb-rel…...