浅谈二进制位移

一、基本形式

二进制位移操作是计算机编程中常用的一种位操作,它可以用来实现乘除操作、数据压缩和扩展等。位移操作包括左移和右移两种基本形式:

1、左移(Left Shift)

  • 符号:<<
  • 功能:将二进制数的所有位向左移动指定的位数,左边移出的位被丢弃,右边空出的位用0填充。
  • 效果:相当于将原数乘以 2n2n,其中 nn 是位移的位数。

2、右移(Right Shift)

  • 符号:>>(算术右移)或 >>>(逻辑右移)
  • 功能:将二进制数的所有位向右移动指定的位数,右边移出的位被丢弃,左边空出的位填充方式取决于是算术右移还是逻辑右移。
    • 算术右移:左边空出的位用原数的最高位(符号位)填充,适用于有符号整数。
    • 逻辑右移:左边空出的位用0填充,适用于无符号整数。
  • 效果:相当于将原数除以 2n2n,其中 nn 是位移的位数。

二、简单示例

#include <stdio.h>int main() {int num = 5; // 二进制表示为 101int shift = 2;// 左移int leftShift = num << shift; // 将101左移2位,变为10100,即20printf("左移后的结果: %d\n", leftShift);// 算术右移int arithmeticRightShift = num >> shift; // 将101右移2位,变为00001,即1printf("算术右移后的结果: %d\n", arithmeticRightShift);// 逻辑右移unsigned int numUnsigned = 5; // 无符号整数unsigned int logicalRightShift = numUnsigned >>> shift; // 将101右移2位,变为00001,即1printf("逻辑右移后的结果: %u\n", logicalRightShift);return 0;
}

三、注意事项

  • 位移操作可能会导致溢出,尤其是右移操作,因为左移操作通常不会影响符号位。
  • 在不同的编程语言中,位移操作的具体实现可能有所不同,例如在某些语言中,右移操作可能默认就是算术右移。
  • 位移操作是位级别的操作,不涉及数值的数学运算,因此执行速度非常快。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/884445.shtml

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

相关文章

顺序表和链表(一)

目录 线性表 一、顺序表 <1>顺序表 &#xff08;1&#xff09;静态顺序表 &#xff08;2&#xff09;动态顺序表-按需申请 <2>链表 &#xff08;1&#xff09;单链表 &#xff08;2&#xff09;双链表 主程序&#xff08;test.c&#xff09; 头文件&#…

pgsql数据量大之后可能遇到的问题

当 PostgreSQL 数据量增大时&#xff0c;可能会遇到以下问题&#xff1a; 查询性能下降&#xff1a;随着数据量的增加&#xff0c;查询可能会变得缓慢&#xff0c;尤其是在没有适当索引的情况下。大量的数据意味着更多的行需要被扫描和过滤&#xff0c;这会显著增加查询执行时间…

样本不均衡与异常点检测处理|SMOTE|LOF|IForest

在机器学习中&#xff0c;数据样本不均衡和异常值检测是数据科学家和机器学习工程师经常面临的挑战。这些问题如果不加以处理&#xff0c;会严重影响模型的性能和准确性。本文将概述这些问题&#xff0c;并提出相应的解决方案。 样本不均衡概述 在分类任务中&#xff0c;样本…

aws boto3 下载文件

起因&#xff1a;有下载 aws s3 需求&#xff0c;但只有web 登录账号&#xff0c;有 id 用户名 密码&#xff0c;没有 boto3 的 key ID 经过分析&#xff0c;发现网页版有个地址会返回临时 keyID&#xff0c;playwright 模拟登录&#xff0c;用 page.on 监测返回数据&#xff…

# Ubuntu 达人九步养成记(1)

Ubuntu 达人九步养成记&#xff08;1&#xff09; 目录&#xff1a; 一、ubuntu基本安装 二、设置语言环境 三、设置服务器镜像源 四、在启动栏添加终端图标 五、使用apt更新和升级系统软件 六、使用apt安装软件 七、使用apt删除软件以及apt-get 八、deb格式及谷歌浏览…

QT——TCP网络调试助手

目录 一.项目展示 ​编辑 二.开发流程 三.QTcpServer、QTcpSocket、QUdpSocket类的学习 1.QTcpServer服务端 2.QTcpSocket客户端 3.Udp通信 四.网络调试助手 1.首先我们实现当用户选择不同协议类型时不同的UI组件如何切换 2.实现打开/关闭按键图片的切换 方式一&…

InsuranceclaimsController

目录 1、 InsuranceclaimsController 1.1、 SelectInsurances 1.1.1、 //单据状态名称 1.1.2、 //报案编号 1.1.3、 //保单金额 InsuranceclaimsController using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections; using System.Collec…

导航栏渐变色iOS

- (void)viewDidLoad {[super viewDidLoad];// 设置导航栏属性self.navigationBar.translucent NO;[self.navigationBar setTitleTextAttributes:{NSForegroundColorAttributeName : [UIColor whiteColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:28]}];// 修复iO…

layui tree customSelet选中的内容重写,查找父级

layui tree customSelet选中的内容重写&#xff0c;查找父级 需要重新源码 // 递归查找函数 // tree 所有数据 &#xff0c;nodeId选中数据id值 function findParent(tree, nodeId, parent null) {for (let i 0; i < tree.length; i) {if (tree[i].id nodeId) {return …

《Web性能权威指南》-浏览器API与协议-读书笔记

本文是《Web性能权威指南》第四部分——浏览器API与协议的读书笔记。 第一部分——网络技术概览&#xff0c;请参考网络技术概览&#xff1b; 第二部分——无线网络性能&#xff0c;请参考无线网络性能&#xff1b; 第三部分——HTTP&#xff0c;请参考HTTP。 浏览器网络概述 …

使用TypeORM进行数据库操作

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 使用TypeORM进行数据库操作 引言 TypeORM 简介 安装 TypeORM 配置 TypeORM 定义实体 连接数据库 运行项目 高级功能 事务管理 关…

架构师之路-学渣到学霸历程-38

nginx的热部署&#xff08;方案二&#xff09; 方案一的缺点就是直接升级完成了&#xff1b; 那么问题来了&#xff1a; 如果说出现问题了&#xff0c;想要回退 那么应该怎么处理&#xff1f;所以最好就是有一段的缓冲期限&#xff1b; 那么久可以直接 从升级的方案来进行 …

ESP-HaloPanel:用 ESP32-C2 打造超低成本智能家居面板

项目简介 在生活品质日益提升的今天&#xff0c;智能家居系统已经走进了千家万户&#xff0c;并逐渐成为现代生活的一部份。与此同时&#xff0c;一款设计精致、体积轻盈、操作简便的全屋智能家居控制面板&#xff0c;已经成为众多家庭的新宠。这种高效、直观的智能化的解决方…

Hadoop生态圈框架部署(四)- Hadoop完全分布式部署

文章目录 前言一、Hadoop完全分布式部署&#xff08;手动部署&#xff09;1. 下载hadoop2. 上传安装包2. 解压hadoop安装包3. 配置hadoop配置文件3.1 虚拟机hadoop1修改hadoop配置文件3.1.1 修改 hadoop-env.sh 配置文件3.3.2 修改 core-site.xml 配置文件3.3.3 修改 hdfs-site…

数据分析SPSS面试题及参考答案

目录 SPSS 的全称是什么? SPSS 的主要用途是什么? 如何打开 SPSS 数据文件? 什么是数据视图和变量视图?它们的作用分别是什么? 如何定义变量的类型、标签和值? SPSS 中支持哪些数据类型? SPSS 中如何处理缺失值? 解释一下 SPSS 中缺失值的处理方法有哪些? 描…

数据建模圣经|数据模型资源手册卷3,数据建模最佳实践

简介 本书采用了类设计模式的方式对数据模型进行高度抽象总结&#xff0c;展现了常见的数据模型构建模型等模型的作用、层次、分类、地位、沟通方式&#xff0c;和业务规则。使用一个强大的数据模型模式的数据建模&#xff0c;评估特定与广义模型的优缺点&#xff0c;有助于你改…

【力扣】Go语言回溯算法详细实现与方法论提炼

文章目录 一、引言二、回溯算法的核心概念三、组合问题1. LeetCode 77. 组合2. LeetCode 216. 组合总和III3. LeetCode 17. 电话号码的字母组合4. LeetCode 39. 组合总和5. LeetCode 40. 组合总和 II小结 四、分割问题6. LeetCode 131. 分割回文串7. LeetCode 93. 复原IP地址小…

#渗透测试#SRC漏洞挖掘# 信息收集-Shodan进阶之Mongodb未授权访问

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

Golang--流程控制

1、分支结构 1.1 if分支 单分支 语法&#xff1a;if 条件表达式 { 逻辑代码 } 当条件表达式为true时&#xff0c;就会执行代码块的代码。条件表达式左右的()可以不写&#xff0c;也建议不写 if和表达式中间&#xff0c;一定要有空格在Golang中&#xff0c;{}是必须有的,就算你…

【补补漏洞吧 | 02】等保测评ZooKeeperElasticsearch未授权访问漏洞补漏方法

一、项目背景 客户新系统上线&#xff0c;因为行业网络安全要求&#xff0c;需要做等保测评&#xff0c; 通过第三方漏扫工具扫描系统&#xff0c;漏扫报告显示ZooKeeper和 Elasticsearch 服务各拥有一个漏洞&#xff0c;具体结果如下&#xff1a; 1、ZooKeeper 未授权访问【…