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

news2024/11/24 19:30:08

目录

一. 移位计算

(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.coloradmin.cn/o/1189961.html

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

相关文章

[HCTF 2018]WarmUp全网最详细解释

查看源码找到提示 访问source.php 代码审计: class emmm{public static function checkFile(&$page){$whitelist ["source">"source.php","hint">"hint.php"]; 定义了一个名为emmm的类,在该类中有…

线性代数(四)| 解方程 齐次性 非齐次性 扩充问题

文章目录 1 方程解的个数2 解方程步骤2.1 齐次性方程组2.2 非齐次方程组 3 一些扩充问题 系数矩阵 增广矩阵 A m n X B A_{mn}XB Amn​XB 1 方程解的个数 m 代表有m个方程 n代表有n个未知数 系数矩阵的秩与增广矩阵的秩不同 无解 若相同 ,如系数矩阵的秩和未知…

Leetcode—226.翻转二叉树【简单】

2023每日刷题(二十四) Leetcode—226.翻转二叉树 实现代码 /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr) {}* …

MySQL中表格的自我复制,与复制表格

先创建一个空表,my_tab01 CREATE TABLE my_tab01(id INT ,name VARCHAR(32),sal DOUBLE,job VARCHAR(32),deptno INT); SELECT * FROM my_tab01;准备一张有数据的表格: 将另一张表格的数据插入到my_tab01的表格中: -- 演示如何自我复制 --…

Android Glide transform旋转rotate圆图CircleCrop,Kotlin

Android Glide transform旋转rotate圆图CircleCrop,Kotlin import android.graphics.Bitmap import android.os.Bundle import android.util.Log import android.widget.ImageView import androidx.appcompat.app.AppCompatActivity import com.bumptech.glide.load…

在现实生活中传感器GV-H130/GV-21的使用

今天,收获了传感器GV-H130/GV-21,调试探头的用法,下面就来看看吧!如有不妥欢迎指正!!!! 目录 传感器GV-H130/GV-21外观 传感器调试探头 探头与必要准备工作 传感器数值更改调试 …

MySQL的表格去重,史上最简便的算法,一看就会

首先,表格my_tab02存在很多重复的数据: #表格的去重 方法一: 详细内容传送门:表格的去重 -- 思路: -- 1.先创建一张临时表 my_tmp,该表的结构和my_tab02一样 -- 2.把my_tmp的记录通过distinct关键字 处理后 把记录复…

docker.service配置docker镜像加速

加速器配置方法很多,小白我用的是docker.service文件,所以直接在里面配置啊 配置以后,要systemctl daemon-reload下 ,然后docker info 下看下镜像地址是否是自己已配置的 docker run --privilegedtrue --name mytomcat -p 8080…

【线上问题】服务器关机导致docker启动的mysql数据库消失了

目录 一、问题描述二、解决方式 一、问题描述 1. 服务器迁移断电导致docker启动的mysql数据库没有了数据 2. data目录是空的 3. mysql重启数据库消失了 二、解决方式 1. sudo -i切换root账号 2. 查找mysql的容器卷 find /var/lib/docker/volumes/ -name mysql3. 进入各个_dat…

文生图模型评测之PickScore

文章目录 1. 简介2. 构建数据集2.1 Pick-a-Pic web App2.2 Pick-a-Pic Dataset3. PickScore3.1.1模型结构和损失函数3.2 模型训练3.3 验证模型4. 作用4.1 作为验证模型的验证集4.2 用于模型选择5. 小结论文链接:Pick-a-Pic: An Open Dataset of User Preferences for Text-to-…

【halcon】halcon 函数文件 以及 脚本引擎如何调用外部函数文件 上篇

前言 halcon有几种文件: 本地程序函数(.hdev)外部函数文件(.hdvp)库函数(.hdp) 说多了容易混淆,今天就说,我觉得最有用的:外部函数文件(.hdvp) 步骤 先写一段halcon脚本&#x…

兴达易控232转profinet在搅拌站使用案例配置案例

该搅拌站所采用的是双行星动力搅拌桨混合机,借助兴达易控232转profinet网关(XD-PNR200)与PLC和变频器进行通信,从而实现对变频器的精确控制,大大提升了搅拌过程的稳定性和效率。 这一方案还具备高度的灵活性和可扩展性,使得搅拌站…

【数据结构】二叉树的遍历递归算法详解

二叉树的遍历 💫二叉树的结点结构定义💫创建一个二叉树结点💫在主函数中手动创建一颗二叉树💫二叉树的前序遍历💫调用栈递归——实现前序遍历💫递归实现中序和后序遍历 💫二叉树的结点结构定义 …

打造一个可视化接口自动化测试系统

现如今,接口开发几乎成为一个互联网公司的标配了,无论是web还是app,哪怕是小程序,都离不开接口作为支撑,当然,这里的接口范围很广,从http到websocket,再到rpc,只要能实现…

nginx https 如何将部分路径转移到 http

nginx https 如何将部分路径转移到 http 我有一个自己的网站,默认是走的 https,其中有一个路径需要走 http。 实现 在 nginx 的配置文件 https 中添加这个路径,并添加一个 rewrite 的指令。 比如我需要将 tools/iphone 的路径转成 http&am…

【Unity实战】实现强大通用易扩展的对话系统(附项目源码)

先看看实现的最终效果 前言 之前的对话系统因为存在一些错误和原作者不允许我分享,所以被我下架了,而且之前对话系统确实少了一些功能,比如最基本的逐字打印功能,原本来是打算后面补充的。 对话系统在游戏中实现太常见了&#x…

机器学习股票大数据量化分析与预测系统 - python 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果UI界面设计web预测界面RSRS选股界面 3 软件架构4 工具介绍Flask框架MySQL数据库LSTM 5 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 机器学习股票大数据量化分析与预测系统 该项目较为新颖&am…

Java提高与实践

IO流 IO流概述 文件字节输入流:每次读取一个字节 package fileStream;import java.io.*;public class HelloFileInputStream {public static void main(String[] args) throws IOException {//创建文件字节输入流 管道,与源文件接通//写法一//InputStr…