右移运算符总结

2023-05-16

概念

右移运算符是将一个二进制数按指定移动的位数向右移动。

移动过程中,正数最高位补0,负数最高位补1,无符号数最高位补0。

补码

在计算机系统中,数值一律用补码来表示和存储,其中最高位表示符号位,1表示负数,0表示正数。

  • 正数的补码是原码自身。
  • 负数补码是通过原码计算得到,计算过程为:符号位不变,其余位按照原码取反加1

补码计算示例

以计算十进制-100的补码为例,计算过程为:

-100的原码:10000000 00000000 00000000 01100100
符号位保持不变,取反:11111111 11111111 11111111 10011011
加1后,-100补码为:11111111 11111111 11111111 10011100

右移运算

下面右移都是以整数为例,不考虑小数情况。

正数右移

正数右移高位需补0,以100右移4位为例:

操作二进制对应十进制
补码00000000 00000000 00000000 01100100100
右移4位00000000 00000000 00000000 000001106
源码00000000 00000000 00000000 000001106

最后可得: 100 >> 4 = 6

正数的右移相当于除法,右移几位就除以2的几次方,如100>>4 等效 100/2^4

负数右移

负数右移高位需补1,以-100右移4位为例:

操作二进制对应十进制
原码10000000 00000000 00000000 01100100-100
转换为补码11111111 11111111 11111111 10011100-100
右移4位,高位补111111111 11111111 11111111 11111001 
保留符号位,按位取反10000000 00000000 00000000 00000110 
加1后转为源码10000000 00000000 00000000 00000111-7

最后可得: -100 >> 4 = -7

负数的右移不等于除法,即负数右移不能按除以2的n次方计算(n表示移动位数)。

无符号右移

无符号右移和正数右移相同,都是高位补0,以-100右移4位为例:

操作二进制对应十进制
原码10000000 00000000 00000000 01100100-100
转换为补码11111111 11111111 11111111 10011100-100
右移4位,高位补000001111 11111111 11111111 11111001 
转为原码00001111 11111111 11111111 11111001268435449

最后可得: -100 >>> 4 = 268435449

右移28位后,最高位为0表示正数,所以原码即为补码本身。
“>>>”是Java里的无符号右移操作符。

总结

正数的右移,负数的无符号右移,就是相应的补码移位所得,在高位补0即可。
负数的右移,就是补码高位补1,然后按位取反加1即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

右移运算符总结 的相关文章

  • idea常用的插件

    1 lombok 省略get set方法 2 Alibaba Java Coding Guidelines 阿里的代码规范 3 Translation 谷歌中英文翻译工具 4 CodeGlance 代码迷你缩放图插件 xff0c 快速下拉拖
  • Hadoop windows本地环境安装

    hadoop使用java编写 xff0c 所以windows安装和java一样也需要配置环境变量 一 下载所需文件 JDK下载地址 xff0c jdk1 8下载Hadoop下载 xff0c hadoop下载 xff0c 进去后找到一个版本然
  • Gitlab的安装及使用

    1 GitLab概述 1 1 GitLab介绍 GitLab是利用Ruby on Rails一个开源的版本管理系统 xff0c 实现一个自托管的Git项目仓库 xff0c 可通过Web界面进行访问公开的或者私人项目 GitLab能够浏览源代
  • C语言例程:用二维数组实现矩阵转置

    用二维数组实现矩阵转置 本实例将输入的 3 4 矩阵转置为 4 3 矩阵 xff0c 并输出结果 通过本实例 xff0c 可以学习如何使用二 维数组 实例解析 二维数组的定义 二维数组定义的一般形式为 xff1a 第一部分 基础篇 X227
  • C++头文件的相互引用问题(#include” xxx“使用)

    188条消息 C C 43 43 头文件的引用问题 xff08 include使用 xff09 保护大苹果 CSDN博客 c 43 43 include头文件
  • 树莓派设置自动连接无线网络

    树莓派开机后自动连接无线网络方法 xff0c 亲测有效 1 在任意方法 xff08 无线或有线 xff09 已经连接树莓派的基础上 xff0c 执行该命令 xff0c 意思是编辑wpa supplicant conf这个文件 内容如下 xf
  • 常用快捷键(1)----Windows组合键

    单个的Windows键是打开和隐藏开始菜单 xff0c 功能与 Esc 43 Ctrl 组合键功能相同 下面是一些常用的Windows组合键 xff1a 1 快捷键 xff1a Windows 43 Shift 43 S 功能 xff1a
  • android 获取唯一Id,小小总结一下。仅供参考

    1 获取imei xff1a 前言 xff1a 因传统的移动终端设备标识如国际移动设备识别码 xff08 IMEI xff09 等已被部分国家认定为用户隐私的一部分 xff0c 并存在被篡改和冒用的风险 xff0c 所以在Android 1
  • xib中添加自定义可编辑属性

    IOS开发中 xff0c 有些人喜欢使用xib来进行项目的开发 xff0c 使用xib可以使界面可视化 xff0c 很多控件的属性设置都可以在 xib 中设置 xff0c 减少了代码量 xff1b 同时不用一遍遍的运行程序看效果 xff0c
  • STM32使用寄存器工程模板点亮一个LED灯

    1 环境说明 xff08 1 xff09 使用的是普中STM32F103开发板 xff08 2 xff09 keil 5软件 2 目的 点亮开发板上的LED1灯 3 步骤 xff08 1 xff09 定义一系列寄存器的宏 span clas
  • 结构体数组的使用

    测试源码 span class token macro property span class token directive keyword include span span class token string lt stdio h
  • string字符串拼接

    功能描述 实现在字符串末尾拼接字符串 函数原型 xff1a string amp operator 43 61 const char str 重载 43 61 操作符string amp operator 43 61 const char
  • 千万不要在TX2上安装Qt6

    失败 xff01 Nvidia TX2安装Qt6 和qtCreator7 手把手一步步 千万不要想在TX2上安装QT6 xff01 XCB缺失几乎无解 xff0c 如果有大佬可以指导一下 最开始准备使用交叉编译的方案给TX2写程序 因为台式
  • 最新WSL2 ubuntu环境 cuda,教程,适用于40系显卡

    实验环境 xff1a ubuntu2204 ubuntu1804 xff0c 最新4060笔记本电脑 xff0c 自我觉得是目前比较好用的搭配 xff1a wsl2 43 gnome 43 wsl中的pycharm xff0c 写的很全 x
  • 高分辨率机器安装 Ubuntu虚拟机的屏幕显示字体过小问题的解决

    在网上搜索了很多的解决方案 xff0c 有的试了没效果 xff0c 有的比较麻烦 xff0c 没尝试了 我说一下我的解决方案 问题 xff1a 首先我这个机器是2k屏的 xff0c 分辨率就是会大于 1920x1080 xff1b 然后我是
  • IDEA rebuild project idea如何重新编译项目

    idea如何重新编译项目 1 2 3 4 5 6 7 分步阅读 idea工具可以用于多种语言来开发项目 xff0c 如果是像java这样需要编译之后运行的编程语言 xff0c 每次在运行项目之前都需要对源码进行编译 一般的情况下都是idea
  • Ubuntu更新软件时报"http://cn.archive.ubuntu.com/ubuntu"相关错误的解决方案

    一 问题日志 W 仓库 http cn archive ubuntu com ubuntu xenial Release 没有 Release 文件 N 无法认证来自该源的数据 xff0c 所以使用它会带来潜在风险 N 参见 apt sec
  • 《uni-app》一个非canvas的飞机对战小游戏实现-我方飞机实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战
  • 《Vue插件》瀑布流插件vue-masonry的使用与踩坑记录

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 主页 oliver尹的主页 格言 跌倒了
  • 《uni-app》一个非canvas的飞机对战小游戏实现-子弹模型的实现

    这是一个没有套路的前端博主 xff0c 热衷各种前端向的骚操作 xff0c 经常想到哪就写到哪 xff0c 如果有感兴趣的技术和前端效果可以留言 xff5e 博主看到后会去代替大家踩坑的 xff5e 接下来的几篇都是uni app的小实战

随机推荐