运算符左移与右移(点进来看看很有用,不只是说一下左移和右移,还有他们的有趣的应用)

2023-05-16

1.左移和右移

左移和右移这一对运算符。不知道有多少人可以很清楚它们,并且可以很好的应用,反正我是不可以,于是就打算总结一下。
左移:左移就是把一个数的所有位都向左移动若干位
符号表示:<<
注意:其实很多时候我都以为>> 这样是左移运算符,因为它朝向左边,不知道你们有没有这样认为,但是一定注意哈,左移是<< 它是朝右的。
这里左移我们只需要明白两点:
1.哪些位需要移动
答:所有位
2.移动了之后 原来位该怎么办
最高位被挤掉的舍弃,最低位添0(左移)
总结一下:丢弃最高位,0补最低位
右移:右移就是把一个数的所有位都向右移动若干位
符号表示:>>
这里左移我们只需要明白两点:
1.哪些位需要移动
答:所有位
2.移动了之后 原来位该怎么办
最低位被挤掉的舍弃,最高位添0(右移)
总结一下:丢弃最低位,0补最高位

2.1有趣的应用-对图像数据进行处理:

图像数据:图像一般都有四个颜色分量 rgba .
r g b 分别是红黄蓝,a是透明度。
那么我们可以对其最低位进行处理,举个例子:
一个 24 位的位图中的每个像素的三个颜色分量(红,绿和蓝)各使用 8 个比特来表示。如果我们只考虑蓝色的话,就是说有 2^8 种不同的数值来表示深浅不同的蓝色。而像 11111111 和 11111110 这两个值所表示的蓝色,人眼几乎无法区分。
那么我们这样能有什么用吗?
可以将我们不想给别人看的数据写在图片上(实现图片隐写,隐藏数据)
因此对其进行最低位的处理 将 11111111 改为 11111110
python代码如下:

def make_even_image(image):
    """取得一个 PIL 图像并且更改所有值为偶数,使最低有效位为 0
    """
    # image.getdata 方法返回的是一个可迭代对象,其中包含图片中所有像素点的数据
    # 每个像素点表示一个颜色,每种颜色有红绿蓝三种颜色按比例构成
    # R Red 红色;G Green 绿色;B Blue 蓝色;A Alpha 透明度
    # 更改所有像素点中四个数值为偶数(魔法般的移位)
    # 这里使用位运算符 >> 和 << 来实现数据处理
    # 奇数减一变偶数,偶数不变,这样处理后,所有数值的最低位变为零
    # pixels 为更改后的像素点数据列表
    pixels = [(r >> 1 << 1, g >> 1 << 1, b >> 1 << 1, a >> 1 << 1)
            for r, g, b, a in image.getdata()]
    # 调用 Image 的 new 方法创建一个相同大小的图片副本
    # 参数为模式(字符串)和规格(二元元组)
    # 这里使用 image 的属性值即可
    even_image = Image.new(image.mode, image.size)
    # 把处理之后的像素点数据写入副本图片
    even_image.putdata(pixels)
    return even_image

2.2 有趣的应用2-乘除法的应用很方便

x4可以写成x << 2 后者的速度比前者快很大
左移了多少位就相当与
2的多少次方
x/4 可以写成 x >> 2 速度更快。

就这样,其他好的例子也没有找到很好的,如果遇到了还需要我们自己取变通。
如果有什么错误,欢迎指出,谢谢

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

运算符左移与右移(点进来看看很有用,不只是说一下左移和右移,还有他们的有趣的应用) 的相关文章

  • 激励视频广告——移动应用的财富密钥

    如何良好地平衡用户体验和用户增长 是广告行业的持久命题 xff0c 上网搜索 激励视频广告 你会发现类似的问题层出不穷 xff1a 请问什么是激励视频广告 xff1f 谁能麻烦介绍一下吗 xff1f 激励视频广告哪家做的好 xff1f 跪求
  • 设计模式详解:模式汇总与索引清单

    从本篇开始 xff0c 和您一起进入设计模式的世界 之前用C 做微信微信公众号开发系列文章 xff0c 更多的是原生模式 xff0c 帮助猿友们理解业务流程和基本实现方法 xff0c 但是那些类的实现仍然是用面向过程的思维方式 xff0c
  • 如何稳步实现互联网流量变现?

    我突然想起了自己刚做开发的时候 xff0c 那会还是菜鸟的我为了快速获取流量 最大程度的变现 xff0c 基本上不会考虑所谓的用户体验 xff0c 满脑子都是怎么引流 怎么变现 xff0c 所以常常引起用户反感 xff0c 严重折损了用户体
  • 一文获悉互动广告的投放攻略

    一直以来 xff0c 顶着 第四代互联网广告 头衔的 互动广告 通过互动 交流等方式进行双向传播 xff0c 一改以往传统广告的单向线性传播 xff0c 与此同时 xff0c 用户也从被动的观看者转变为主动的参与者 xff0c 直观地体验产
  • 穿山甲成长中心——人能尽其才则百事兴

    对于一众APP开发者来说 xff0c 要想在激烈的市场竞争中突出重围 xff0c 得到用户的青睐 xff0c 往往要面临重重困难 缺乏广告资源 xff0c 流量变现困难等着问题都使得开发者在刚刚进入市场时没有机会展现自己从而停滞不前 每一个
  • 广告精准投放的新出路为何?

    众所周知 xff0c 当前广告行业呈现普遍性的跨媒体投放 xff0c 测试成本 管理成本较高 xff0c 存在信息孤岛等情况 xff0c 一众广告主们通过数据分析优化投放的难度较大 在各类引擎中搜索 广告精准投放 xff0c 诸如 如何以更
  • 互联网流量变现出路为何?一文浅析

    国庆小长假在各大广告主和开发者们眼里就是一座巨大的流量富矿 xff0c 以国庆为主题推的广告和软件层出不穷 我突然想起了我自己刚做开发的时候 xff0c 那会还是菜鸟的我为了快速获取流量 最大程度的变现 xff0c 基本上不会考虑所谓的用户
  • MyBatisPlus 入门学习笔记(版本:3.4.3)

    文章目录 学习辅助资料 MyBatisPlus概述1 MyBatisPlus是什么2 特性 快速开始1 创建数据库 96 mybatis plus 96 2 导入相关依赖3 数据源配置3 快速开始3 1 User实体类编写3 2 mappe
  • Shell自动化脚本学习

    目录 xff08 1 6 xff09 Linux Shell脚本的自动化编程之shell xff1a 命令排序 xff08 1 7 xff09 Linux Shell脚本的自动化编程之shell xff1a 通配符 xff08 2 1 xf
  • ROS创建工作空间及功能包流程总结整理(python)

    ROS创建工作空间及功能包流程总结整理 xff08 python xff09 参考资料 xff1a B站赵虚左 xff1a https www bilibili com video BV1Ci4y1L7ZZ p 61 19 amp vd s
  • 中序计算式的计算器模型C语言实现

    span class token macro property span class token directive keyword include span span class token string lt stdio h gt sp
  • 设计模式详解:面向对象设计的七大原则

    单一职责原则 xff1a 一个对象应该只包含单一的职责 xff0c 并且该职责被完整地封装在一个类中 Single Responsibility Principle SRP Every object should have a single
  • 排序算法——猴子排序

    猴子排序 让一群猴子在打印机前昼夜不停地敲打键盘 xff0c 最终有可能能输入一部莎士比亚作品集 尽管概论微乎其微 同理 xff0c 把一堆扑克牌扔到天上 xff0c 等它们落下来的时候有概率会刚刚好从小到大排成一列 现在有一个无序的数组
  • ubuntu下firefox使用HTML 5播放器看B站

    ubuntu下FireFox使用HTML 5播放器看B站 firefox使用flash是真的难顶 xff0c 一直闪白 发现bilibili其实可以使用html 5播放器 使用 span class token function sudo
  • Ubuntu下将rm命令替换为trash命令

    Ubuntu下将rm命令替换为trash命令 rm命令是一个很可怕的命令 xff0c 因为它不会给你后悔的机会 xff0c 删了就是删了 xff0c 再也找不回来了 xff08 据说能在lost 43 found里面恢复 xff0c 但是操
  • 正则表达式_排除特定字符/字符串

    正则表达式 排除特定字符 字符串 使用场景 xff1a 使用git add A指令提交一个文件夹中所有的代码文件 xff0c 忽略所有的可执行文件 抽象化 匹配一些字符串 xff0c 找出其中不含后缀 xff0c 即 的字符串 理解 排除特
  • 什么是操作系统?操作系统的定义、功能、特性

    什么是操作系统 xff1f 操作系统的定义 功能 特性 什么是操作系统 xff1f 首先 xff0c 计算机的资源可以分为硬件资源和软件资源 CPU 存储设备 各种类型的输入输出设备与外设等 xff0c 共同构成计算机的硬件资源 各种程序
  • 计算机网络第六课

    计算机网络第六课 奈式准则未考虑噪声 噪声 xff1a 模拟信号 gt 数字信号转换 信道复用技术 xff08 续 xff09 在单一物理通信线路上 xff0c 传输若干个独立的信号 三种信道复用技术 xff1a FDMTDMWDM TDM
  • libc_hidden_def、libc_hidden_weak、libc_hidden_proto

    libc hidden def libc hidden weak libc hidden proto 在阅读glibc源码的时候 xff0c 遇见了几个没见过的宏 xff0c 几乎所有的函数都会使用这几个宏 xff1a libc hidde
  • GLIBC源码——putchar

    GLIBC源码 putchar GLIBC源码 从我认为最简单的putchar开始 putchar放在putchar c中 xff0c 而putchar c放在libio文件夹里 加上注释 xff0c 一共只有36行 span class

随机推荐

  • 【汇编】正确使用IDIV指令

    汇编 正确使用IDIV指令 div为无符号除法 xff0c idiv为有符号除法 idiv进行的是128 64位除法 xff0c 即被除数为128位 除数为64位 64位操作系统中寄存器大小当然只有64位 xff0c 因此 xff0c id
  • 【acwj】04,An Actual Compiler 一个真正的编译器

    搬运自https github com DoctorWkt acwj xff0c 一个介绍如何使用C语言编写一个可自举的类C语言编译器的说明 进行了粗略的翻译 acwj 04 xff0c An Actual Compiler 一个真正的编译
  • 设计模式详解:工厂方法模式

    今天我们来看一下使用频率非常高的工厂方法模式 xff0c 看完原理分别给出 NET和JAVA两种语言的实现源码 定义 xff1a 工厂方法模式 xff1a 定义一个用于创建对象的接口 xff0c 但是 让子类决定将哪一个类实例化 工厂方法模
  • 【acwj】05,Statements 实现“Statements”

    搬运自https github com DoctorWkt acwj xff0c 一个介绍如何使用C语言编写一个可自举的类C语言编译器的说明 进行了粗略的翻译 acwj 05 xff0c Statements 实现 Statements I
  • diff命令实现

    diff命令实现 diff是类UNIX系统下的一个重要的系统工具 xff0c 用于比较两个文本文件的差异 它有三种输出格式 先给大家看看两个用于比对的文件原文 file1 a e b a g h b g g file2 b c d g e
  • verilog 常见位宽问题集合

    verilog 常见的位宽问题集合 1 位宽不等 wire b 31 0 assign b 61 5 39 b0 这种错误常见于赋值操作中 2 保留最低位 wire b assign b 61 32 39 h5 此时因为b缺省定义为1位长度
  • glibc源码阅读

    FBI warning 本文仅仅是试图以二进制选手的方式来理解mallo c中所使用的堆机制 xff0c 不会对具体操作以及堆块结构作过多叙述 xff0c 敬请谅解 水平欠佳 xff0c 有问题也欢迎留言指出 先解释一些常用的宏与常量 变量
  • github copilot插件安装

    首先是github copilot的官网地址 xff1a https copilot github com 现在要使用copilot首先要先通过申请才可以使用 xff0c 点击 Sign up 登录 xff0c 这里最好已经有github的
  • 操作系统第一章知识点小结

    第一章 操作系统概述 1 1操作系统的概念 xff0c 功能和目标 资源管理者 xff08 接下来的4给章节就是对这四个功能的详细学习 xff09 处理机处理 xff1a 处理机管理因为是为进程分配处理机资源 xff0c 也称为进程管理 存
  • SerDes基础知识

    SerDes是什么 SerDes是Serializer Deserializer 的缩写 xff0c 即串行器和解串器 xff0c 顾名思义是一种将并行数据转换成串行数据发送 xff0c 将接收的串行数据转换成并行数据的 器件 对于FPGA
  • 安装Pycharm

    文章目录 Ubuntu使用pycharm解压安装使用pycharmwindows 使用Pycharmpip install cryptography 报错 Ubuntu使用pycharm 官网地址 这里以Ubuntu1604 LTS 下载p
  • 找完数(用数组实现)

    找完数 所谓完数就是该数恰好等于除自身外的因子之和 例如 xff1a 6 61 1 43 2 43 3 xff0c 其中1 2 3为6的因子 本题要求编写程序 xff0c 找出任意两正整数m和n之间的所有完数 输入格式 xff1a 输入在一
  • Ubuntu系统使用图形化界面来创建一个用户

  • 设计模式详解:抽象工厂模式

    今天我们来看一下另一个使用频率非常高的抽象工厂模式 xff0c 看完原理分别给出 NET和JAVA两种语言的实现源码 定义 xff1a 抽象工厂模式 xff1a 提供一个 创建一系列相关或相互依赖对象的接口 xff0c 而无须指定它们具体的
  • Vmmem进程(WSL)内存资源过高

    本文章向大家介绍Docker Vmmem内存占用过高的解决方案 Windows的linux子系统最大占用可到本机器的80 xff0c 所以必须限制一下它的性能来达到优化目的 解决方案 win 43 R 输入cmd打开控制台 输入wsl sh
  • git使用教程8-pycharm 使用 Reset 回滚到某次 commit 提交

    前言 当我们用 pycharm 提交代码的时候 xff0c 每天都要 commit 提交的内容 xff0c 有时候发现后面写的代码还不如前两天的稳定 这时候想把代码回退到某次 commit 提交 xff0c 可以使用git的 reset 功
  • IP地址中的网络地址和主机地址分别是什么意思?怎么计算的呢?

    什么意思呢 xff1f 先理解下这个 xff1a 01087654321 这是一个电话号码 xff0c 它是一坨数字但我们很清楚它分为两部分 xff0c 其中010是表示北京的区号 xff0c 后面87654321是北京范围内的一台座机号
  • Windows安装 hadoop 环境

    1 需要安装 Java 环境 2 下载 hadoop https archive apache org dist hadoop common 3 解压 hadoop 压缩包 xff08 如 xff1a 将下载好的压缩包放在 E config
  • C语言基础-猜拳问题

    题目描述 石头剪刀布是常见的猜拳游戏 石头胜剪刀 xff0c 剪刀胜布 xff0c 布胜石头 如果两个人出拳一样 xff0c 则不分胜负 一天 xff0c 小A和小B正好在玩石头剪刀布 已知他们的出拳都是有周期性规律的 xff0c 比如 石
  • 运算符左移与右移(点进来看看很有用,不只是说一下左移和右移,还有他们的有趣的应用)

    1 左移和右移 左移和右移这一对运算符 不知道有多少人可以很清楚它们 xff0c 并且可以很好的应用 xff0c 反正我是不可以 xff0c 于是就打算总结一下 左移 xff1a 左移就是把一个数的所有位都向左移动若干位 符号表示 xff1