4.移位计算,乘除法运算

目录

一. 移位计算

(1)算数移位

(2)逻辑移位

(3)循环移位

二. 乘法运算

(1)原码的乘法运算

(2)补码的乘法运算

三. 除法运算

(1)原码的除法运算

(2)补码的除法运算

四. C语言中的类型转换

五. 数据的存储和排列

(1)大小端模式

(2)边界对齐


一. 移位计算

(1)算数移位

移位:通过改变各个数码位和小数点的相对位置,从而改变各数码位的位权。可用移位运算实现乘法、除法。

r进制,右移k位小数点,相当于乘以r^k,左移k位小数点,相当于除以r^k

a.原码的算数移位―—符号位保持不变,仅对数值位进行移位。

  • 右移:高位补0,低位舍弃。若舍弃的位=0,则相当于÷2;若舍弃的位不等于0,则会丢失精度。
  • 左移:低位补0,高位舍弃。若舍弃的位=0,则相当于×2;若舍弃的位不等于0,则会出现严重误差。

b.反码的算数移位

正数的反码与原码相同,因此对正数反码的移位运算也和原码相同。

  • 右移:高位补0,低位舍弃。左移:低位补0,高位舍弃。

负数的反码数值位与原码相反,因此负数反码的移位运算规则需要调整。

  • 右移:高位补1,低位舍弃。左移:低位补1,高位舍弃。

c.补码的算数移位

正数的补码与原码相同,因此对正数反码的移位运算也和原码相同。

  • 右移:高位补0,低位舍弃。左移:低位补0,高位舍弃。

负数补码=反码末位+1,导致反码最右边几个连续的1都因进位而变为0,直到进位碰到第一个0为止。(负数补码中,最右边的1及其右边同原码。最右边的1的左边同反码)

  • 右移(同反码):高位补1,低位舍弃。左移(同原码):低位补0,高位舍弃。

(2)逻辑移位

逻辑右移:高位补0,低位舍弃。逻辑左移:低位补0,高位舍弃。

(3)循环移位

二. 乘法运算

(1)原码的乘法运算

二进制的手算过程:

原码一位乘法:机器字长n+1,数值部分占n位。符号位通过异或确定;数值部分通过被乘数和乘数绝对值的n轮加法、移位完成根据当前乘数中参与运算的位确定(ACC)加什么。若当前运算位=1,则(ACC)+[|x|]原;若=0,则(ACC)+0。每轮加法后ACC、MQ的内容统一逻辑右移(ACC左边补零,MQ右面移除的位丢弃)。

已经确定的乘积,也叫部分积。

(2)补码的乘法运算

补码的乘法运算和原码极为类似,但有以下不同:

举例:

设机器字长为5位(含1位符号位,n=4) , x=-0.1101,y= +0.1011,采用Booth算法求x*y

x[补]=11.0011,[-x]补=00.1101,[y]补=0.1011
 

三. 除法运算

(1)原码的除法运算

设机器字长为5位(含1位符号位,n=4),x=0.1011,y=0.1101,采用原码恢复余数法求x/y,

x=0.1011,y=0.1101,[|y|]补=0.1101,[-|y|]补=1.0011
符号单独处理:符号位=被除数和除数的符号位取异或,数值位取绝对值进行除法计算。
实现方法:上商0/1,得到余数,余数末尾补0

左移n次,上商n+1次,最后一次上商余数不左移。

不恢复余数法:对恢复余数法的简化:

(2)补码的除法运算

设机器字长为5位(含1位符号位,n=4),x=+0.1000,y=-0.1011,采用补码加减交替除法求x/y。

[x]补=00.1000,[y]补=11.0101,[-y]补=00.1011

补码除法的规则:

  • 符号位参与运算,被除数/余数、除数采用双符号位;
  • 被除数和除数同号,则被除数减去除数。被除数和除数异号,则被除数加上除数;
  • 余数和除数同号,商1,余数左移一位减去除数;余数和除数异号,商0,余数左移一位加上除数。
  • 重复n次,末位商恒置1。

四. C语言中的类型转换

五. 数据的存储和排列

(1)大小端模式

大端方式:更容易人类理解;小端方式:更容易计算机实现读取。

(2)边界对齐

现代计算机通常是按字节编址,即每个字节对应1个地址,通常也支持按字、按半字、按字节寻址。假设存储字长为32位,则1个字=32bit,半字=16bit。每次访存只能读/写1个字:

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

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

相关文章

MySQL -- mysql connect

MySQL – mysql connect 文章目录 MySQL -- mysql connect一、Connector/C 使用1.环境安装2.尝试链接mysql client 二、MySQL接口1.初始化2.链接数据库3.下发mysql命令4.获取执行结果5.关闭mysql链接6.在C语言中连接MySQL 三、MySQL图形化界面推荐 使用C接口库来进行连接 一、…

【无代码】【VR开发】【Unity】【VRTK】4-导入VRTK Tilia Package

【导入VRTK V4】 VRTK的Tilia Package包含了一整套空间开发方案。导入后你可以在PackageManager中看到它们。 所有的Tilia包都可以在如下页面找到: https://www.vrtk.io/tilia.html Tilia包有一个安装器,可以让你仅仅安装需要的包。包的种类很多,按照适用方向分类。 点击H…

关于Web端 —— UI自动化测试

在手工测试阶段,针对项目输出了测试用例,如果这些测试用例需要在版本迭代的过程中,需要进行回归测试,通过手工重复地执行测试用例,将会耗费大量的人力。 为此应运而生就有了自动化测试,通过使用自动化工具…

行情分析——加密货币市场大盘走势(11.7)

大饼昨日下跌过后开始有回调的迹象,现在还是在做指标修复,大饼的策略保持逢低做多。稳健的依然是不碰,目前涨不上去,跌不下来。 以太昨天给的策略,依然有效,现在以太坊开始回调。 目前来看,回踩…

深度学习经典网络:GoogleNet

深度学习经典网络--GoogleNet 1、为什么要提出Inception2、为什么是Inception3、实际中的Inception4、GoogleNet 整体网络结构 GoogLeNet是google推出的基于Inception模块的深度神经网络模型,在2014年的ImageNet竞赛中夺得了冠军,在随后的两年中一直在改…

野火霸天虎 STM32F407 学习笔记_5 按键输入;位带操作介绍

输入——按键点灯 开发板按键电路如下: 按键未按下接地,按下后为高电平。电容起到消抖作用,软件处理就不需要手动延时消抖了。 编程没啥难度,就是改了一下输入模式。使用 ReadInputDataBits 读取。 //bsp_button.c #include &q…

IP可视对讲实时录制系统

介绍 软件架构 技术支持 CallRecored介绍 IP可视对讲实时录制系统设计了数据库表,并完成了数据库建模,采用了视频编解码技术,高效网络传输,磁盘高效读写技术,以及提供开放接口。 系统客户端采用扁平化UI,…

微前端qiankun嵌入vue项目后iconfont显示方块

个人项目地址: SubTopH前端开发个人站 (自己开发的前端功能和UI组件,一些有趣的小功能,感兴趣的伙伴可以访问,欢迎提出更好的想法,私信沟通,网站属于静态页面) SubTopH前端开发个人…

点信息标注_BillboardTextActor3D

开发环境: Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题:点附近创建左边或其他信息,且信息面板显示状态不受相机缩放、旋转影响 prj name: BillboardTextActor3D #include…

2022最新版-李宏毅机器学习深度学习课程-P34 自注意力机制类别总结

在课程的transformer视频中,李老师详细介绍了部分self-attention内容,但是self-attention其实还有各种各样的变化形式: 一、Self-attention运算存在的问题 在self-attention中,假设输入序列(query)长度是N…

2023 electron最新最简版windows、mac打包、自动升级详解

这里我将讲解一下从0搭建一个electron最简版架子,以及如何实现打包自动化更新 之前我有写过两篇文章关于electron框架概述以及 常用api的使用,感兴趣的同学可以看看 Electron桌面应用开发 Electron桌面应用开发2 搭建electron 官方文档:ht…

Vscode Vim自动切换

在VsCode里安装了Vim插件,由于Vim插件存在Normal和Insert两种模式,会需要经常性的按shift切换中英文,太过麻烦,本文介绍一下如何通过im-select来解决。 首先先确保自己的电脑里装有英文语言包,win10系统下可以使用Win…

【机器学习4】降维

常见的降维方法有主成分分析、 线性判别分析、 等距映射、 局部线性嵌入、 拉普拉斯特征映射、 局部保留投影等。 1 PCA最大方差角度理解 PCA无监督学习算法。 PCA的目标, 即最大化投影方差, 也就是让数据在主轴上投影的方差最大。 在黄线所处的轴上&…

Windows环境下编译OLLVM源码(VS2022)

windows环境下编译OLLVM 13.x VisualStudio配置下载OLLVM13.xollvm的使用 网上关于windows环境编译ollvm信息比较杂乱,在此编译成功的基础上做一下总结! VisualStudio配置 1,正常配置C桌面环境 2,在单个组件中选择用于Windows得C…

【算法与数据结构】77、LeetCode组合

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:如果k是固定的,最直接的方法就是建立k个for循环,将结果全部压入result容器中。…

3、FFmpeg基础

1、FFmpeg 介绍 FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库。 2、FFmpeg 组成 - libavformat:用于…

改进YOLO系列:12.Repulsion损失函数【遮挡】

1. RepLoss论文 物体遮挡问题可以分为类内遮挡和类间遮挡两种情况。类间遮挡产生于扎堆的同类物体,也被称为密集遮挡(crowd occlusion)。Repulsion损失函数由三个部分构成,yolov5样本匹配,得到的目标框和预测框-一对应第一部分主要作用:预测目标框吸引IOU最大的真实目标框,…

论文阅读——InternImage(cvpr2023)

arxiv:https://arxiv.org/abs/2211.05778 github:https://github.com/OpenGVLab/InternImage 一、介绍 大部分大模型都是基于transformer的,本文是一个基于CNN的视觉基础模型。使用可变性卷积deformable convolution作为核心操作&…

「Verilog学习笔记」多功能数据处理器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 注意题目要求输入信号为有符号数,另外输出信号可能是输入信号的和,所以需要拓展一位,防止溢出。 timescale 1ns/1ns module data_…