前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >区分算术移动和逻辑移动

区分算术移动和逻辑移动

作者头像
lexingsen
发布2022-02-24 15:47:03
2.2K0
发布2022-02-24 15:47:03
举报
文章被收录于专栏:乐行僧的博客乐行僧的博客

移位运算是计算机三大基本运算之一,基本运算包括按位运算逻辑运算移位运算。 基本运算的特点: (1)仅对寄存器中的数据进行运算。 (2)计算机中最基本的操作单元,在一个时钟周期内完成。 (3)需要控制信号。 区分算术移位和逻辑移位 从运算符本身是区分不了算术移位还是逻辑移位,因为它们的运算符号都是<<,>>,实际上取决于操作数的类型。如果操作数是无符号数即是逻辑移位,如果操作数是带符号数,是算术移位。

1.逻辑移位 操作对象: 二进制无符号数,例如像地址。 (1)逻辑右移 特点:高位补0,低位移出。 (2)逻辑左移 特点:低位补0,高位移出。 问题探究:什么时候会发生溢出?如何判断溢出? 如果高位移出的是一,则左移发生溢出。

2.算术移位 操作对象: 二进制有符号数,现代计算机中有符号数字使用补码表示。由于计算机不能识别正负号,而0和1恰好可以表示这两种状态。这样就将符号数字化了。 问题探究:什么时候会发生溢出?如何判断溢出? 算术左移溢出判断:如果移出的位不等于新的符号位,则溢出。 算术右移不会发生溢出,但是如果移出的低位不为0,则可能发生数据丢失的的情况。

(1)算术左移 算术左移:按指定的位数向左移位,C语言中用符号 “<<” 表示。 移出的位放在一个特殊的寄存器中,低位补0。

这里写图片描述
这里写图片描述

算术左移可以实现的功能: 左移n位实现乘以2^n的功能。

(2)算术右移 算术右移:按指定的位数向右移位,C语言中用符号 “>>” 表示。

这里写图片描述
这里写图片描述

算术右移可以实现的功能: 右移n位实现乘以2^(-n)的功能。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档