定点运算——位移运算
位移运算
前提:下述的移位运算推理过程是建立在合理的移位运算基础上的,即移位运算的结果和实际运算结果一致
位移运算的数学意义
位移运算,相当于小数点的移动,对数值进行扩大或者缩小进制数倍
左移运算,小数点右移,扩大
右移运算,小数点左移,缩小
位移运算的规则
- 位移运算仅仅改变数值部分,符号位不变==(下述是有意义的位移运算)==
- 删除原则:右移,左添右省;左移,右添左省
- 0,0011010 作为正数,在可进行移位运算的前提下,最高位不为1,对于正数而言,1是有意义的数字,省去一,就省去了实际的数字。
- 对于-26的补码而言,1,1100110,由原码取补码的原则是:符号位不变,数值部分全部取反,末位加一。所以左边有意义的是0,无意义的是1;右边有意义的是1,无意义的是0。 所以对于补码而言,右移,左边添1;左移,右边添0
- 对于-26的反码1,1100101而言,由原码变成反码,是除符号位全部取反。所以对于数值部分,0表示1,1表示0。左移右边添1,右移左边添1
算术移位的硬件实现
正数原码,符号不变始终未0
- 左移,右边添0,最高位省去
- 右移,左边添0,该0可取自符号位的0,右边最低位省去
负数原码,符号不变始终未1
- 左移,右边添0,最高位省去
- 右移,左边添0,最低位省去
- 负数补码,符号不变始终未1
- 左移,右边添0,最高位省去
- 右移,左边添1,该1可取自符号位的1,右边最低位省去
- 负数反码,符号不变始终未1
- 左移,右边添1,最高位省去
- 右移,左边添1,该0可取自符号位的1,右边最低位省去
- 总结:根据上图可得,同样情况下丢1的意义不一样
算术移位和逻辑移位的区别
- 算术移位:计算机中的存储方式,最高位为符号位,除符号位仅仅移动数值位
- 逻辑移位:不存在符号位,所有的数都是数值部分,全部参与移位运算
定点运算——位移运算相关推荐
- java java.lang.Long详解之三 大显神通的位移运算
2019独角兽企业重金招聘Python工程师标准>>> 文章看过后感觉受益匪浅,所以留下了以备温故:http://www.congmo.net/blog/2012/03/11/Lon ...
- java 乘法 位移_java 位移运算与乘法运算
对于 JAVA 编程中,适当的采用位移运算,会减少代码的运行时间,提高项目的运行效率.这个可以从一道面试题说起: 问题: 用最有效率的方法算出2 乘以8 等於几?" 答案:2 << ...
- java 负数 位移运算_Java中的位移运算
在Java中,位移运算属于基本运算,符号是<>,即向左位移和向右位移.在Java中只有整数才能位移,所以其他的不考虑,位移运算是将整数在内存中表示的二进制进行位移,所以在Java中分为正数 ...
- python中算术位移运算
python中有一种位运算--算术位移运算,符号是<<或>>,算术位运算是基于补码的基础上进行的,正数的补码是正数本身,而负数的补码就比较复杂,先把写出正数的二进制,然后取反, ...
- java 乘法 位移_Java 使用位移运算实现乘法
import java.util.Scanner; /** * @author Gaojie * @date 2018/7/23 10:15 * 程序开发中的乘法运算一般是通过 * 或 BigDeci ...
- 彻底弄清补码加减法运算,正数、负数位移运算原理
前言 所有的运算都是补码运算. 正数的补码是其本身 负数补码的计算方式: 由原码到补码:原码除符号位以外全部取反得到反码,再加1得到补码.(取反区别于~按位取反运算符,按位取反运算符是包括符号位在内全 ...
- 位移运算(左移,右移)
1.左移,当左移的位数超过该数值类型的最大位数时,编译器会用左移的位数去模类型的最大位数,按余数进行位移.丢弃最高位,0补最低位.左移相当于乘,左移一位相当于乘2,左移两位相当于乘4,即左移位数乘于2 ...
- 【知识积累】位移运算(<<、>>、>>>)
1.位移运算 原码 反码 = 原码取反 补码 = 反码 + 1 <<表示左移,不分正负数,低位补0; 方式一:补码左移几位,然后再转回原码 方式二:左移几位,乘以2的几次方 举例: 20 ...
- Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位
Java 位运算理解 Java中的位移运算整理 Java右移n位 Java左移n位 一.概述 1.在浏览一篇文章时,看到一个介绍 ,使用位移操作替代乘除法 ,若位移多位该怎么计算呢? 二.代码理解 ...
最新文章
- 安装tensorflow-gpu==1.13.1成功案例
- JS验证框架的使用方法
- ELK 环境搭建1-Elasticsearch
- C++中成员函数和成员变量的隶属问题
- 前滴滴出行产品经理刘飞:写给产品经理的说明书(下)
- VTK:Rendering之HiddenLineRemoval
- 设计模式C++实现——组合模式
- centos 7 防火墙和端口配置
- 推荐关注这7个高质量的前端公众号
- dosbox 伪指令dd为什么会报错_什么是SQL函数?为什么使用SQL函数可能会带来问题?...
- vue 获取响应头里set-cookie的值_最简化 VUE的响应式原理
- OFDM系统MATLAB仿真
- 2、买卖股票的最佳时机 II
- Maven--Cargo远程部署
- 软考资料-软件设计师
- python怎么开服务器,实战讲解:如何用Python搭建一个服务器
- windows设置开机自动启动程序
- ANSI、C99、C11 标准区别详解
- Python关于numpy数组类型转换
- java结构体构建学生 学号_(1)定义一个结构体数组,存放10个学生的学号,姓名,三门课的成绩; 急求...
热门文章
- RHEL5下构建LAMP+Postfix+Dovecot+SquirrelMail+Extmail+Extman+DRBD
- Directx 3D - TL渲染流水线
- cal命令 – 显示日历
- 转载--开发端到端的 Ajax 应用程序,第 3 部分: 集成、测试和调试应用程序
- CSDN写博客教程--笔记
- Keras | 计算模型的FLOPs、MACCs
- Windows Server 2019安装.Net
- 韶关生物实验室建设平面布局
- NS版暗黑破坏神3金手指开发教程(15)
- 英语词汇学习----(卧室)