“第五十五天”

        定点数

原码的乘法:

        乘法的符号位是单独处理的(通过对被乘数和乘数的符号位进行异或实现),数值位去绝对值进行运算。这里的乘法实际上是通过多次加法实现的。

这里被乘数是放在x寄存器,乘数放在MQ寄存器里,乘法运算的实现是第一次乘数的最低一位乘以被乘数然后放在ACC里,然后ACC和MQ里面的数据都右移,ACC空出的高位补零,MQ空出的高位由ACC移出的低位补上,MQ移出的低位舍弃(所以说ACC中存放的是乘积高位,MQ中存放的乘数和乘积的低位),然后这样MQ中的最低位就变成了要参加乘法的下一位,在再次运算之后(除第一次外)运算结果和ACC里存放的值相加然后再放入ACC中(注意刚才ACC移位的目的)。这样通过先加法再移位的反复操作,直到MQ的最后一位是乘数的符号位则结束运算(乘数的符号位不用参与运算),这里最后还要对乘积的符号位进行修改。

这里还有个手算模拟,应该是会考,可以先看看。

        补码乘法运算:Booth算法

补码一位乘法:进行n轮加法,移位,最后要再多一次加法;(多的这一次就是符号位的运算

每次加法加的可能是 0  ,x的补码 ,(-x)的补码。

而且相比于原码移位是逻辑移位(补0),补码的移位是算数移位,而且符号位参与运算。

补码的算术右移符号位是不动的,数值位右移,高位补的和符号位一致。

至于究竟加什么,由MQ中的最低位和辅助位来确定。

辅助位 - MQ最低位 = 1时,加x的补码;  = 0 时 加 0   ;= -1时加(-x)的补码。

对于补码的话,加法器的各个寄存器就多了一位,MQ中的用来当辅助位,而ACC和X中的被用来当双符号位。辅助位的值是会改变的,除了初始为0,后面由右移从乘数移出的低位代替

        除法运算

恢复余数法:

原码的除法的符号位也是单独处理,通过异或实现,数值位取绝对值进行运算,乘法是ACC加上运算结果,除法是ACC减去运算结果。

在运算的时候计算机会在MQ的最低位先商 1 ,如果这个时候被除数(余数,第一次被除数,后面的都是余数)与除数相减之后得到的值小于 0 (符号位为1),就会改商值为 0 ,然后 恢复余数 (把现在这个相减之后小于 0 的余数在加上除数,得到的就是之前的那个余数),注意这个虽然是原码的除法,但在减去除数的时候,用的是 (-|y|)的补码,在恢复余数的时候加的是 |y|的补码。

之后的每一次都是ACC,MQ整体“逻辑左移”,ACC的高位丢弃,MQ低位补0,然后MQ的最低位商1/0,得到余数,余数末位补0,这里要注意的是如果最后一步商的余数为 负 ,也是需要恢复余数,并改商为 0 的 。这里ACC在每一次运算之后存储的余数的最高位好像一定是 0 ,所以不会出现精度丢失的问题,要是丢了也不能叫精度丢失了,重大事故了就,不过没有具体验证。

然后这里也有原码除法的恢复余数法的手算,可以尝试一下。

        原码除法:

加减交替法/不恢复余数法

 上面这张图是下面这种图为什么可以这样处理的原因。这里其实也蛮巧妙的额,不过更像是由数据得出的结果,而非逻辑的推理。

加减交替法和恢复余数法的区别在于,回复余数法是先商值然后再确定余数的,根据余数的值再反过来确定商值是否正确,而恢复余数法则是先计算余数,根据余数的正负来判断商0/1,然后根据余数的正负对余数进行处理得到下一个新余数,然后再根据这个新余数的值确定下一位商值,这样重复直至得出结果,这里如果最后的出的余数为负,则再商0之后,还需要对余数再处理一下(加 |y| 的补码,就是恢复余数的那个东西)得到正确的余数。

        补码除法: 加减交替法

补码的除法和乘法符号位都参与运算,且被除数/余数和除数都采用双符号位。

补码的乘法的右移是算数右移,而补码的除法的左移是逻辑左移,不过好像补码的逻辑左移和算数左移是一样的,都是低位补 0 .

补码除法的运算规则是:

被除数和除数同号的时候,被除数减去除数,异号则加上除数,注意这里还没有开始商,商值是从第一个余数开始的

余数和除数同号时,商 1 ,余数左移一位减去除数;异号时,商 0 ,余数左移一位 加上除数。重复数值位位数。

补码除法的商值末位商恒置为 1 。

这道题怎么说呢,好像也不难,但让我感觉不舒服。下面的两种都是我写的,一个很长,一个很短...

int main()
{int n = 0;scanf("%d", &n);int i = 0;for (i = 2; ; i++){if (n % i == 0){printf("%d", n / i);break;}}return 0;
}
int main()
{int n = 0;scanf("%d", &n);int i = 0;int max = 0;for (i = 1; i <= sqrt(n); i++){if (n % i == 0){int j = 0;int flag = 1;for (j = 2; j <= sqrt(i); j++){if (i % j == 0){flag = 0;break;}}if (flag){int m = n / i;for (j = 2; j <= sqrt(m); j++){if (m % j == 0){flag = 0;break;}}if (flag){int a = m > i ? m : i;max = max > a ? max : a;}}}}printf("%d", max);return 0;
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【SpringBoot】Docker部署

docker部署是主流的部署方式&#xff0c;极大的方便了开发部署环境&#xff0c;保持了环境的统一&#xff0c;也是实现自动化部署的前提。 1 项目的目录结构 package: 点击打包&#xff0c;生成 xxx-SNAPSHOT.jar target目录: 打包生成目录&#xff0c;生成的jar存放位置Docke…

【网络安全】Seeker内网穿透追踪定位

Seeker追踪定位对方精确位置 前言一、kali安装二、seeker定位1、ngrok平台注册2、获取一次性邮箱地址3、ngrok平台登录4、ngrok下载5、ngrok令牌授权6、seeker下载7、运行seeker定位8、运行隧道开启监听9、伪装链接10、用户点击&#xff08;获取定位成功&#xff09;11、利用经…

iTransformer: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING

#论文题目&#xff1a;ITRANSFORMER: INVERTED TRANSFORMERS ARE EFFECTIVE FOR TIME SERIES FORECASTING #论文地址&#xff1a;https://arxiv.org/abs/2310.06625 #论文源码开源地址&#xff1a;https://github.com/thuml/Time-Series-Library #论文所属会议&#xff1a;Mach…

基于单片机的智能清洁小车设计—控制系统设计

收藏和点赞&#xff0c;您的关注是我创作的动力 文章目录 概要 一、研究的主要内容和目标二、总体方案设计2.1智能清洁小车的硬件系统组成2.2智能清洁小车的硬件结构图 三、 小车结构设计5.1基本布局和功能分析5.2小车二维及三维图小车三维图&#xff1a; 四、 原理图程序 五、…

在CentOS 7中手工打造和运行xml文件配置的Servlet,然后使用curl、浏览器、telnet等三种工具各自测试

下载Openjdk并配置环境变量 https://jdk.java.net/java-se-ri/11-MR2是官网下载Openjdk 11的地方。 sudo wget https://download.java.net/openjdk/jdk11.0.0.1/ri/openjdk-11.0.0.1_linux-x64_bin.tar.gz下载openjdk 11。 sudo mkdir -p /usr/openjdk11创建目录&#xff…

UE5 日记(人物连招:蒙太奇动画通知(含视频链接))

教程https://www.youtube.com/watch?vsWpENaVGj2M&listPLiSlOaRBfgkcPAhYpGps16PT_9f28amXi&index10&ppiAQB 相关蓝图 连招逻辑 动画通知类 逻辑分析 1.用户输入 已搭载战斗系统模块,可以收到输入指令 2.连击 第一次攻击&#xff1a; 第一次攻击&#xff0c;…

vulnhub momentum 靶机复盘

环境配置 到学校了 原来的桥接配置要改 这里记录几个点备忘 1.virtualbox 桥接 未指定 重新安装驱动VBoxNetLwf.inf 2.配置完靶机启动失败 手动安装VBoxNetLwf.inf 不要用virtualbox自带的netlwfinstall 3.配置完nmap扫不到 rw init/bin/bash 进去看看网卡配置 信息收集…

C语言_字符串和内存函数

文章目录 前言一. strlen二. strcpy三.strcat四. strcmp &#xff08;字符串比较&#xff09;五. strncpy六. strncmp七. strstr八. strtok九 . strerror perror十. 字符分类函数十一. memcpy (内存拷贝&#xff09;十二. memmove(可以重叠拷贝 也可以实现不重叠的内存拷贝) 前…

VC++程序崩溃时,使用Visual Studio静态分析dump文件

Window环境下的C程序如果发生异常崩溃&#xff0c;首先会和客户联系&#xff0c;让帮忙取特定目录下的dump文件和log文件来分析崩溃的原因。不过发生崩溃的话&#xff0c;从log一般分析不出特定原因&#xff0c;这时候dump文件就起作用了。可以通过Visual Studio和Windbg来静态…

java八股文(基础篇)

面向过程和面向对象的区别 面向过程&#xff1a;在解决问题时&#xff0c;特别自定义函数编写一步一步的步骤解决问题。 面向对象&#xff1a;其特点就是 继承&#xff0c;多态&#xff0c;继承&#xff0c;在解决问题时&#xff0c;不再注重函数的编写&#xff0c;而在于注重…

高效学习工具之Anki新手入门指南(ios端,包括ipad、ihpone设备)————创建、使用、备份、相关资料

文章目录 0 背景0.1 闭环学习0.2 什么是anki 1 开始使用1.1 导入1.2 创建空白组1.3 创建卡片&#xff08;&#xff09;1.3.1 利用anki创建卡片的两种方法1.3.2 复习材料分类 1.4 开启v3算法&#xff0c;设置排程1.4 自定义排程 2 操作卡牌&#xff08;位于卡牌界面中“游览”&a…

C++快餐——C++11(2)

如期待奇迹发生&#xff0c;那唯有不停伸手去抓紧&#xff0c;去把握才行。 文章目录 类成员变量缺省值default关键字delete关键字final关键字可变参数模板STL容器中empalce相关接口函数优点 lambda表达式捕获列表注意&#xff01;&#xff01;&#xff01;底层实现 总结 类成员…

leetcode-栈与队列

C中stack 是容器么&#xff1f; 栈&#xff0c;队列往往不被归类为容器&#xff0c;而被归类为container adapter(容器适配器)。因为由底层的容器实现&#xff0c;同时使用适配器模式的设计模式&#xff0c;封装了一层。 我们使用的stack是属于哪个版本的STL&#xff1f;SGI ST…

电路的电线的拼接

不积跬步无以至千里&#xff0c;今天小编也是复习今天学习的内容&#xff0c;废话不多说&#xff0c;看博客吧&#xff01;&#xff01;&#xff01; 目录 准备条件 操作 成品 准备条件 操作 将定制的套管插入导线当中&#xff0c;24V或者0V是尖端的端子&#xff0c;后面根…

基于SSM的养老院管理系统

基于SSM的养老院管理系统的设计与实现~ 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringSpringMVCMyBatisVUE工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 系统展示 摘要 养老院管理系统是一个基于SSM&#xff08;Spring、Spring MVC、MyBatis&…

微信定时发圈,快人一步不落索

现在的社交媒体运营已经成为了私域流量获取的重要手段&#xff0c;而微信作为最大的社交平台之一&#xff0c;更是吸引了众多使用者。但是&#xff0c;你是否曾经感叹过每天手动发朋友圈的繁琐&#xff1f;是否希望能够事先设置好定时发送的功能&#xff0c;让你的朋友圈自动更…

Spring Boot 3系列之一(初始化项目)

近期&#xff0c;JDK 21正式发布&#xff0c;而Spring Boot 3也推出已有一段时间。作为这两大技术领域的新一代标杆&#xff0c;它们带来了许多令人振奋的新功能和改进。尽管已有不少博客和文章对此进行了介绍&#xff0c;但对于我们这些身处一线的开发人员来说&#xff0c;有些…

【JavaEE】HTTP协议

HTTP协议 HTTP是什么?HTTP 协议格式HTTP 请求格式HTTP响应格式协议格式总结 HTTP 请求 (Request)认识 URLURL 基本格式 关于 URL encode认识 "方法" (method)1. GET 方法2. POST 方法 认识请求 "报头" (header) HTTP 响应详解认识 "状态码" (st…

【嵌入式开发 Linux 常用命令系列 9 -- linux系统终端命令提示符设置(PS1)】

文章目录 Linux PS1 介绍PS1 纯文本和特殊的转义序列PS1 颜色设置 Linux PS1 介绍 在Linux中&#xff0c;PS1&#xff08;Prompt String 1&#xff09;是一个环境变量&#xff0c;用来定义shell命令提示符的显示内容和格式。当你在终端中输入命令时&#xff0c;PS1定义的就是那…

Jupyter Notebook的使用

文章目录 Jupyter Notebook一、Jupyter Notebook是什么&#xff1f;二、使用步骤1.安装Miniconda2.安装启动**Jupyter Notebook**3.一些问题 三、Jupyter Notebook的操作1.更换解释器2.在指定的文件夹中打开 四.报错解决1.画图的时候出现报错2.画图的时候空白3.pandas相关的错误…