C++中的运算符总结(6):移位运算符

C++中的运算符总结(6):移位运算符

10、按位右移运算符( >>)和左移运算符( <<)

移位运算符将整个位序列向左或向右移动,其用途之一是将数据乘以或除以 2 n 2^n 2n

下面的移位运算符使用示例将变量乘以2:

int doubledValue = num << 1; // shift bits one position left to double value

下面的的移位运算符使用示例将变量除以2:

int halvedValue = num >> 1; // shift bits one position right to halve value

以下程序演示了如何使用移位运算符将一个整数乘以或除以 2 n 2^n 2n

#include <iostream>
using namespace std;int main()
{cout << "Enter a number: ";int inputNum = 0;cin >> inputNum;int halfNum = inputNum >> 1;int quarterNum = inputNum >> 2;int doubleNum = inputNum << 1;int quadrupleNum = inputNum << 2;cout << "Quarter: " << quarterNum << endl;cout << "Half: " << halfNum << endl;cout << "Double: " << doubleNum << endl;cout << "Quadruple: " << quadrupleNum << endl;return 0;
}

输出:

Enter a number: 16
Quarter: 4
Half: 8
Double: 32
Quadruple: 64

分析:

输入的数字为 16,其二进制表示为 1000。第 9 行将它向右移 1 位,结果为 0100,即 8,这相当于将其减半。第 10 行向右移两位,从 1000 变成了 00100,即 4。第 11 和 12 行的左移运算符的效果完全相反。向左移 1 位时结果为 10000,即 32,向左移动两位的结果为 100000,即 64,相当于将数字分别翻了一番和两番!

注意:

移位运算符不会旋转值。另外,对有符号数执行按位运算的结果随实现而异,在有些编译器上,向左移位时,并不会导致最低有效位的值变成最高有效位的值,而是将最低有效位设置为零。

该文章会更新,欢迎大家批评指正。

推荐一个零声学院的C++服务器开发课程,个人觉得老师讲得不错,
分享给大家:Linux,Nginx,ZeroMQ,MySQL,Redis,
fastdfs,MongoDB,ZK,流媒体,CDN,P2P,K8S,Docker,
TCP/IP,协程,DPDK等技术内容
点击立即学习:C/C++后台高级服务器课程

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

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

相关文章

算法-图BFS/DFS-单词接龙

算法-图BFS/DFS-单词接龙 1 题目概述 1.1 题目出处 https://leetcode-cn.com/problems/number-of-islands 1.2 题目描述 给定两个单词&#xff08;beginWord 和 endWord&#xff09;和一个字典&#xff0c;找到从 beginWord 到 endWord 的最短转换序列的长度。转换需遵循如…

C++八股记录

C内存管理 C中&#xff0c;内存分成5个区。 栈&#xff1a;函数内局部变量&#xff1b;自动管理&#xff0c;效率高&#xff0c;但空间较小&#xff1b; 堆&#xff1a;new分配的内存块&#xff1b;手动管理&#xff0c;效率低&#xff0c;但空间大&#xff1b; 自由存储区&…

Linux 常用命令大全

一、基本操作命令 //------首先先来几个热键&#xff0c;非常方便&#xff0c;一定要记住------// Tab ------按键—命令补齐功能Ctrlc ------按键—停掉正在运行的程序Ctrld ------按键—相当于exit&#xff0c;退出Ctrll ------按键—清屏 1.1 关机和重启 1. 关机命令&am…

弯道超车必做好题集锦三(C语言选择题)

前言&#xff1a; 编程想要学的好&#xff0c;刷题少不了&#xff0c;我们不仅要多刷题&#xff0c;还要刷好题&#xff01;为此我开启了一个弯道超车必做好题锦集的系列&#xff0c;每篇大约10题左右。此为第三篇选择题篇&#xff0c;该系列会不定期更新&#xff0c;后续还会…

全面解析MES系统中的报工操作

一、报工操作的定义&#xff1a; 报工操作是指在生产过程中&#xff0c;操作员通过MES系统记录和提交生产工序的相关信息&#xff0c;如工时、产量、质量等。报工操作将生产过程中的实际情况反馈给MES系统&#xff0c;实现生产数据的实时采集和记录。 二、报工操作的流程&…

MacOS goland go1.21 debug问题

安装dlv brew install dlv 安装之后在终端会显示所在目录 类似/usr/local/Cellar/delve/1.21.0/bin 配置goland 在文件系统中找到goland 右击选择show package contents -> Contents -> plugins -> go 尝试替换 其中对应系统 的 dlv 结果还是不行 然后打开应用gol…

shell脚本:在curl命令中传递变量、单引号 ‘ 和双引号 “区别、时间戳获取、生成UUID

在curl命令中传递变量 在curl中引用变量时要加个转义 “” 如&#xff1a; #!/bin/sh timestamp$(($(date %s%N)/1000000)) curl http://xx -H "Content-Type:application/json" -X POST -d {"timestamp": ""${timestamp}""}单引…

常见前端面试之VUE面试题汇总七

20. 对 vue 设计原则的理解 1.渐进式 JavaScript 框架&#xff1a;与其它大型框架不同的是&#xff0c;Vue 被设计 为可以自底向上逐层应用。Vue 的核心库只关注视图层&#xff0c;不仅易于上 手&#xff0c;还便于与第三方库或既有项目整合。另一方面&#xff0c;当与现代化的…

universal robot 机械臂 官方基本教程

https://academy.universal-robots.cn/modules/e-Series-core-track/Chinese/module3/story_html5.html?courseId2166&languageChinese 教程1 控制箱内部 包含&#xff1a; 主机板&#xff0c;SD卡&#xff0c;和安全控制板 安全控制板负责所有控制信息&#xff0c;包括…

Ansible学习笔记(持续更新)

Ansible学习目录 1.自动化运维1.1 企业实际应用场景1.1.1 Dev开发环境1.1.2 测试环境1.1.3 发布环境1.1.4 生产环境1.1.5 灰度环境 1.2 程序发布1.3 自动化运维应用场景1.4 常用自动化运维工具 2.Ansible介绍和架构2.1 Ansible特性2.2 Ansible架构2.2.1 Ansible主要组成部分2.2…

LeetCode(力扣)617. 合并二叉树Python

LeetCode617. 合并二叉树 题目链接代码 题目链接 https://leetcode.cn/problems/merge-two-binary-trees/ 代码 递归 # Definition for a binary tree node. # class TreeNode: # def __init__(self, val0, leftNone, rightNone): # self.val val # …

c# 使用了 await、asnync task.run 三者结合使用

在 C# 异步编程中&#xff0c;await 和 async 关键字结合使用可以让你更方便地编写异步代码&#xff0c;而无需直接使用 Task.Run。然而&#xff0c;有时候你可能仍然需要使用 Task.Run 来在后台线程上执行某些工作&#xff0c;这取决于你的代码逻辑和需求。 await 和 async 关…

【springboot】springboot定时任务:

文章目录 一、文档&#xff1a;二、案例&#xff1a; 一、文档&#xff1a; 【cron表达式在线生成器】https://cron.qqe2.com/ 二、案例&#xff1a; EnableScheduling //开启任务调度package com.sky.task;import com.sky.entity.Orders; import com.sky.mapper.OrderMapper; …

LeetCode1049. 最后一块石头的重量 II

1049. 最后一块石头的重量 II 文章目录 [1049. 最后一块石头的重量 II](https://leetcode.cn/problems/last-stone-weight-ii/)一、题目二、题解方法一&#xff1a;01背包二维数组算法思路具体实现 方法二&#xff1a;01背包一维数组 一、题目 有一堆石头&#xff0c;用整数数…

LeetCode-160. 相交链表

这是一道真的非常巧妙的题&#xff0c;题解思路如下&#xff1a; 如果让他们尾端队齐&#xff0c;那么从后面遍历就会很快找到第一个相交的点。但是逆序很麻烦。 于是有一个巧妙的思路诞生了&#xff0c;如果让短的先走完自己的再走长的&#xff0c;长的走完走短的&#xff0c;…

MyBatisx代码生成

MyBatisx代码生成 1.创建数据库表 CREATE TABLE sys_good (good_id int(11) NOT NULL,good_name varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,good_desc varchar(255) COLLATE utf8mb4_general_ci DEFAULT NULL,PRIMARY KEY (good_id) ) ENGINEInnoDB DEFAULT CHA…

Multisim软件安装包分享(附安装教程)

目录 一、软件简介 二、软件下载 一、软件简介 Multisim软件是一款电路仿真和设计软件&#xff0c;由美国国家仪器公司&#xff08;National Instruments&#xff09;开发。它提供了一个交互式的图形界面&#xff0c;使用户能够轻松地构建和仿真电路。以下是Multisim软件的详…

Java中文件的创建(三种方式),文件常用的方法

文件的创建 方式1&#xff1a; new File(String pathName) 根据路径构建一个File对象方式2&#xff1a; new File(File parent,String child) 根据父目录文件子路径构建方式3&#xff1a; new File(String parent,String child) 根据父目录子路径构建 代码&#xff1a; //方…

Unity——协程(Coroutine)

本文为问GPT所得 一、在Unity中&#xff0c;协程到底是个啥 在Unity中&#xff0c;协程&#xff08;Coroutine&#xff09;是一种特殊的函数&#xff0c;用于在一段时间内暂停执行&#xff0c;并在稍后的时间点继续执行。通常情况下&#xff0c;我们在代码中通过调用协程来实现…

Android 之 传感器专题 (4) —— 其他传感器了解

本节引言&#xff1a; 在上一节的结尾说了&#xff0c;传感器部分因为笔者没怎么玩过&#xff0c;本节就简单的把剩下的几个常用的 传感器介绍一遍&#xff0c;当作科普&#xff0c;以后用到再慢慢研究~ 1.磁场传感器(Magnetic field sensor) 作用&#xff1a;该传感器主要用…