c++中的移位操作……填坑系列

【零天赋C语言】——详解操作符 一、算术操作符 除了 % 操作符之外,其他的几个操作符可以作用于整数和浮点数。 对于 / 操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。 % 操作符的两个操作数必须为整数。返回的是整除之后的余数。 二、移位操作符 整数的二进制表示有三种方式: 原码 反码 补码 正数的原码、反码、补码相同; 负数的原码、反码、补码是需要计算的; 一、左移操作符 : << 移位规则:左边抛弃,右边补零 注:n向左移动一位之后,n的值并未发生.. 阅读详情

首先需要明确一点,计算机中的二进制数都是用其补码表示的,所有的移位运算都是在补码的表示形式上进行操作的,无符号数的补码是其本身,有符号数的补码是符号位不变,其他位求反加1。这里说的很清楚。

无符号数

左移:高位移出,低空位补0。相当于乘以2的n次方

当左移一定位数时,最高位变为1,这时计算机会认为这是一个负数的补码,这时你输出一下计算机就会显示一个负数。如果左移位数超过int类型数值的位数,则会显示为0,因为低空位是用0填补的.比如

int b  = (9<<28); 
cout<<b<<endl;
int b_  = (9<<32); 
cout<<b_<<endl;

右移:低位移出,高空位补0。相当于除以2的n次方

当右移位数超过二进制数字的表示位数时,结果就会变成0,再怎么右移也不会再变,因为会变成0x00000000,也就是0的补码。比如

int b_ = (9>>5);
cout<<b_<<endl;

有符号数

左移:高位移出,低空位补0。

同样的道理,当左移一定位数时,最高位变为0,这时计算机会认为这是一个正数的补码,这时你输出一下计算机就会显示一个正数。如果左移位数超过int类型数值的位数,则会显示为0,因为低空位是用0填补的.比如

int b = (-9<<23); 
cout<<b<<endl;
int b_ = (-9<<28); 
cout<<b_<<endl;
int b__ = (-9<<32); 
cout<<b__<<endl;

右移:低位移出,高空位补1。

当右移位数超过二进制数字的表示位数时,结果就会变成-1,再怎么右移也不会再变,因为最后会变成这个数0xFFFFFFFF,这就是-1的补码,所以不会再变。比如

int b = (-9>>1);
int b_  = (-9>>5); 
cout<<b<<endl;
cout<<b_<<endl;

 

C语言中数据的左移右移应用 以下都是本人犯过的低级错误,希望看到的能引以为戒!!! 立即下载

相关推荐

MacOS M芯片部署ComfyUI:从环境排雷到插件生态一站式指南

本文为MacOS M系列芯片用户提供了一份详尽的ComfyUI部署指南。文章深入剖析了因架构差异导致的常见安装报错根源,并给出了基于MPS后端的正确PyTorch安装命令。从创建纯净Python虚拟环境、分步安装依赖,到验证GPU加速,手把手指导完成部署。同时,还推荐了包括管理器、汉化在内的必备插件,以完善使用生态,帮助用户一站式解决从环境搭建到效率提升的所有问题。

weixin_29261711的博客 993

C/C++中的移位运算你真的搞懂了吗?一文看懂移位运算

C/C++中的移位运算的基本概念,左移、右移与逻辑移位、算术移位的关系与区别,编译是如何确定是算术移位还是逻辑移位的。

weixin_43354152的博客 8064

优刻得首个「国产千卡智算集群」落地,支持智源千亿大模型训练

在人工智能引领的时代浪潮中,算力已成为技术进步与创新的核心驱动力。面对当下AI算力需求的飙升、高端AI芯片供应受限的挑战,加之OpenAI带来的技术封锁,唯有坚定不移的发展自主可控的国产技术方案,持续壮大国产智算集群规模,才能一路突破围追堵截,进一步促进国产大模型产业生态繁荣。集群还提供了完善高效的软件栈工具,集成多种主流的深度学习编程框架,通过测试验证,确保了对行业领先人工智能模型的高效支持,做到开箱即用,用户可快速投入模型的开发和部署,加速了其在人工智能领域的布局和发展。方面取得了显著成效。

Ucloud_TShare的博客 1473

C/C++的移位运算

简介 移位运算是位运算的一种,具有简介高效的特点。原理就是将存储数值的二进制数进行左移(<<)或者右移(>>)。 左移位(<<) 例如10对应的二进制数是1010,左移一位就变成了10100,位数增加了一位,数值扩大了两倍。就像十进制的10,左移一位,变成100,其值就扩大了10倍。 示例代码 #include<iostream> usi...

li_il的博客 1445

新华DCS系统仿真测试方法详细介绍

新华DCS ICAN3.1系统是应用广泛并且功能非常强大的国产DCS系统。具有管理虚拟CPU并仿真运行的功能。并且上位机画面可以与虚拟DPU数据实时同步仿真。具体仿真方法如下所示: 1、 需要设备及软件: 2、步骤如下: 2.1硬件步骤: 1)电脑开机。 2)交换机连接电脑网卡。 3)交换机上电运行。 2.2软件步骤: 1)设置电脑IP 一般配置IP为A网工程站IP。 222.222.221.201/255.255.255.0 2)建立虚拟DPU 登录 D:\iCAN\Program\Vxcu 文件夹。

lw_waston的博客 6891

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)>

Unity 代码混淆<混淆插件(Obfuscator Pro 3.9.4)> 插件导入项目 导入后打开OPS/Obfuscator/Obfuscator Pro Settings 打开后可以看到界面如下 可以在上面界面中选择你需要混淆的类,方法,字段,属性,事件,参数。需要混淆的程序集的选择。如果有些程序集混淆后会有问题也可以添加到白名单里不被混淆 根据自己需求取选择 这个界面是是否添加添加随机代码的 如果使用了上面的插件可以使用 插件下载网址:https://download.cs

Xing_Cheng_Yun的博客 5100

C位操作分析

1.取出某位的值(以1Byte为例) 八位的数据,依次从低到高取出八位的值: unsigned char a=0xFF; int n0, n1, n2, n3, n4, n5, n6, n7; n0 = (a& 0x01) == 0x01 ?1 : 0;//取出最低位 n1 = (a& 0x02) == 0x02 ? 1 : 0; n2 = (a& 0x04) == 0x04 ? 1 : 0; n3 = (a& 0x08) == 0x08 ? 1 : 0; n4 = (a&a

weixin_42271802的博客 614

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。

qq_43381998的博客 8248

C/C++移位运算

一、移位运算符及其规则 移位运算符就是在二进制的基础上对数字进行平移,是在补码的基础上进行操作的。按照平移的方向和填充数字的规则分为三种:>(带符号右移)、>>>(无符号右移)。 左移运算符的规则: (1).int类型数值实际移位的次数是和32的余数,移位33次和移位1次得到的结果相同; 例如int a=1,b=32; a 在程序预处理阶段,编译器会自动执行b=b&31;(一个数的余数

captain_wangnb的博客 7722

23、关联挖掘到相关性分析及约束关联挖掘详解

本文详细解析了从关联挖掘到相关性分析的发展过程,以及基于约束的关联挖掘方法。文章介绍了传统支持-置信度框架的局限性,并引入Lift、χ2、All Confidence和Cosine等度量来评估规则的相关性。同时探讨了多种规则约束在数据挖掘中的应用机制及其优化效果,旨在提高挖掘效率和规则质量。最后结合实际案例说明如何综合运用相关性度量与规则约束以满足业务需求,并展望了数据挖掘技术的未来发展。

aa123的博客 103

【光子 AI】AI Agent 知识体系深度研究报告

从理论基础到前沿应用:全面解析人工智能代理的核心架构、关键技术与发展趋势📅 2026 年 3 月 | 📊 深度研究报告 | 🔬 人工智能领域 | 📈 前沿技术分析**AI Agent(人工智能代理)**是一种能够感知环境、基于所获得的信息做出决策,并执行行动以影响该环境的软件系统。AI Agent 的设计旨在模仿或实现智能行为,它们可以在各种环境中操作,包括物理世界和虚拟空间。随着大语言模型(LLM)技术的突破性进展,AI Agent 正从实验室研究快速走向产业应用。根据 Gartner 发布的《2

AI天才研究院 176

C/C++移位运算符

在一般的C语言教学中,移位运算符很多情况下讲师直接跳过,更多的会在汇编语言中系统得讲述。然而,熟练掌握。高级语言中的移位很大程度上可以展现一个人的代码功底并且能提高编程效率。更多内容访问omegaxyz.comC/C ++提供位逻辑运算符和移位运算符。二者只能用于整形和字符型。位运算符是对每位进行操作而不影响左右两位,这有别于常规运算符(&&|| !)是将整个数进行操作的。一. 位逻辑运算符1. ~

徐奕的专栏 3386

软考高级-系统架构设计师 知识点整理 (一篇就够了 建议收藏)

软考高级-系统架构设计师知识点整理---十万字总结,助你通过高级

片言可决讼,半纸能缚龙 7345

C++中对字节进行位操作,特定位,设置为1或者0

#include<iostream> #include<bitset> using namespace std; int main() { int a,b,c; unsigned char d; a = 0x51; cout<<"a的二进制"<<bitset<sizeof(a)*2>(a)<<endl; a |= 0x80; cout<<"a的二进制 最高位,置为1:.

qq_29994775的博客 2253

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

C/C++中的一个巨大的坑:移位操作的优先级问题

对于下面的表达式,运算结果应该是多少? int result = 4 >> 1 + 1; 我不止一次地认为运算结果为4/2+1=3。而实际上,运算结果为:4/4=1。这是由于移位操作的优先级比加法运算低。 上图引自百度百科 上图引自百度百科

chfe910的专栏 9998

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

“C语言操作符”

操作符 算数操作符:+ - * / % 加减乘除为基本操作,%为取模;/ 和 %的区别是:/为取商,%为取余数;%只用于两个整数。

Thinker_serious的博客 1011

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

位运算

一、整数的表示 1、C,C++,Java中没有提供在代码直接写二进制数的方法。 2、在数字前面,加0,表示八进制数。 3、在数字前面,家0x,表示十六进制数。 4、只有十进制有正负,八进制、十六进制表示无符号正整数。   二、位运算 位运算表达式由操作数和位运算符组成,实现对整数类型的二进制数进行位运算。   三、位运算符 位运算符有两类:逻辑运算符(~、&、|、^)和移位

TillPerfect学习笔记 700

C语言中的左移位和右移位

移位操作只是简单地把一个值的位向左或右进行移动。 1. 左移位 符号:<< 在左移位中,之最左边的几位被丢弃,右边多出来的几个空位则由0进行补齐。 例如:01101101 << 3 结果:01101000 2. 右移位 符号:>> 逻辑移位:左边移入的位用0填充 算术移位:左边移入的位由原先该值的符号位决定,符号位为1则移入的位均为1,符号位为0则移入的位均为0,这样能够保持原数的正 负形式不变。 例如:10010110 >> 2 逻辑移位:00100101

shanhejieshiwo的博客 2万+

C语言——移位操作符与位操作符

可以在二进制的基础上对数字进行平移。移位操作符的操作数只能是整数)

2201_76016527的博客 1945

【C语言深度剖析】深入理解C语言中的移位操作符(代码+图解)

文章目录移位操作符原码 反码 补码左移操作符正数左移负数左移右移操作符算术右移正数算术右移负数算术右移逻辑右移 移位操作符 分为: 左移操作符:<< 右移操作符:>> 其实讲移位操作符之前,先来了解一下计算机中的原码、反码和补码 原码 反码 补码 一个数在计算机内部如果是有符号数,则其最高位作为符号位; 如果符号位为0,表示该数为正数;如果符号位为1,表示该数为负数。(0正1负) 如何求原码、反码和补码呢? 原码:最高位作为符号位,其余各位为数值为(0正1负) 反码:正数的反码和原码

Edison's 小宇宙 7482

位运算知识

位运算知识 与运算 根据 与运算 定义,设二进制数字 n ,则有: 若 n & 1 = 0,则 n 二进制 最右一位 为 0 ; 若 n & 1 = 1,则 n 二进制 最右一位 为 1 。 下面展示一些 移位操作。 >> 右移 >>> 右移,左边空出的位以0填充 >>>= 右移赋值,左边空出的位以0填充 无符号右移 n&(n−1) (n - 1) 解析: 二进制数字 n 最右边的 1 变成 0 ,此 1右边的 0都变成 1 。 n

NOTBADCODER的博客 325

C语言之移位操作符、位操作符详解

目录 1、移位操作符 2、位操作符 1、移位操作符 分为左移操作符(>>)和右移操作符(<<)。 左移操作符: 移位规则:左边抛弃,右边补0。 什么意思呢,现在就让我来仔细讲解一番。 比如我们定义一个整型变量a,给它赋初值5.如int a=5;然后将a左移,即a<<2,得到的结果又是多少呢?在讲之前,我们首先要了解到整型5在内存中是怎样存储的,不太清楚的友友们就请看我之前一篇博客整数的3种表达形式及在内存中的存储啦,里面有详细讲解。整型5是以补码的形式

m0_63039919的博客 1万+

c语言中左移、右移要注意的细节

左移规则:高位丢弃,低位补0 右移规则: 右移分为逻辑右移和算数右移,几乎所有的编译器都对有符号数使用算数右移,而对于无符号数必须用逻辑右移。 逻辑右移:高位补0,低位丢弃; 算数右移:高位补最高有效位的值,低位丢弃; 当移位的位数超过改变量类型的位数时,比如变量占用的内存有w位,需要移动k位,当k>w时,我们需要移动的位数shift应该是: shift = k % ...

lingduchunge的博客 1万+

错排问题-C++实现

错排问题是组合数学中的问题之一。考虑一个有n个元素的排列,若一个排列中所有的元素都不在自己原来的位置上,那么这样的排列就称为原排列的一个错排。 n个元素的错排数记为Dn。 研究一个排列错排个数的问题,叫做错排问题或称为更列问题。 最早研究错排问题的是尼古拉·伯努利和欧拉,因此历史上也称为伯努利-欧拉的装错信封的问题。这个问题有许多具体的版本,如在写信时将n封信装到n个不同的信封里,有多少种全部装错信封的情况?又比如四人各写一张贺年卡互相赠送,有多少种赠送方法?自己写的贺年卡不能送给自己,所以也是典型的错排.

csyifanZhang的博客 3119

C语言-【移位操作符详解】

这篇文章主要介绍了C语言中移位操作符

yyzzzj0301的博客 5495

C++的internal,left,right和setw的区别

在 C++ 里,internalleftright和setw均与输入输出流的格式化操作有关,不过它们的功能有所不同。

haoyj2222的博客 495
上一篇: libtorch环境搭建、生成库文件、测试
下一篇: 位运算的奇技淫巧
阿瓜瓜瓜
博客等级 码龄9年 18粉丝 51原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值