坑点--左移&&右移&&无符号右移

二进制:位运算左移、右移、无符号右移 、与 、或、非、异或、非 位运算符有:左移( <<)、右移(>>) 、无符号右移(>>>) 、与(&)、或( |)、非(~)、异或(^),非( ~ ) 除非运算为一元操作符外,其它的都是二元操作符。 1、左移( <<) 将6左移2位:6<<2 0000 0110 然后左移2位后,低位补0: 0... 阅读详情
要点:
<<:左移   左边最高位丢弃,右边补齐0
>>:右移   最高位是0,左边补齐0;最高为是1,左边补齐1
>>>:无符号右移 无论最高位是0还是1,左边补齐0

面试题:
    请用最有效率的方式写出计算2乘以8的结果?
        2 * 8
        2 << 3

代码展示区:
class OperatorDemo3 {
    public static void main(String[] args) {
        //<< 把<<左边的数据乘以2的移动次幂
        System.out.println(3 << 2); //3*2^2 = 3*4 = 12;

        //>> 把>>左边的数据除以2的移动次幂
        System.out.println(24 >> 2); //24 / 2^2 = 24 / 4 = 6
        System.out.println(24 >>> 2);

        System.out.println(-24 >> 2); 
        System.out.println(-24 >>> 2);
    }
}
/*
    计算出3的二进制:11
        00000000 00000000 00000000 00000011
    (00)000000 00000000 00000000 0000001100

    >>的移动:  
    计算出24的二进制:11000
        原码:10000000 00000000 00000000 00011000
        反码:11111111 11111111 11111111 11100111
        补码:11111111 11111111 11111111 11101000

        11111111 11111111 11111111 11101000
        1111111111 11111111 11111111 111010(00) 补码

        补码:1111111111 11111111 11111111 111010
        反码:1111111111 11111111 11111111 111001
        原码:1000000000 00000000 00000000 000110

        结果:-6

    >>>的移动:
        计算出24的二进制:11000
        原码:10000000 00000000 00000000 00011000
        反码:11111111 11111111 11111111 11100111
        补码:11111111 11111111 11111111 11101000

        11111111 11111111 11111111 11101000
        0011111111 11111111 11111111 111010(00)

        结果:1073741818
*/
C语言有符号数和无符号数的左移和右移 #include <vector> #include <iostream> #include <unordered_map> using namespace std; int main() { // 左移 unsigned int un_stringify = 0xa0000000; int stringify = 0xa0000000; cout << "无符号左移:" << endl; // 10 阅读详情

相关推荐

STM32H743IIT6上LVGL移植实战:从零到触摸屏驱动的完整配置流程

本文详细记录了在STM32H743IIT6高性能MCU上,从零开始移植LVGL图形库到7寸RGB触摸屏的完整实战流程。内容涵盖工程搭建、显示与触摸驱动配置、LVGL核心优化及常见问题排查,重点讲解了如何利用STM32H743的硬件特性(如DMA2D、LTDC)提升GUI性能,为嵌入式GUI开发提供了一份详实的配置指南。

spark7igniter的博客 555

位运算符之无符号右移(十进制整数)

一.无符号右移运算符的概念 无符号右移运算符用“>>>”(三个大于号)表示。它会将数值的所有位向右移动指定的位数,左方空缺的位用0补充。 二.无符号右移运算符的使用 (以32位为例) 1.为正的十进制整数 如:64 >>> 5 ①第一步:操作数的绝对值,转化为二进制 100 0000 ②第二步:补码(操作数为正数) 0000 0000 0000 0000 000...

qq_45007120的博客 8146

矩阵束(Matrix Pencil)入门:从通信系统到控制理论,它为何是建模利器?

本文深入探讨矩阵束(Matrix Pencil)在通信系统与控制理论中的关键作用,揭示其作为复杂系统建模利器的独特价值。从MIMO系统的多径干扰分析到电力系统稳定性判据,矩阵束通过`A-λB`方程求解提供精准建模方案,显著提升5G通信和工业控制等领域的性能表现。

weixin_30134145的博客 359

有符号右移和无符号右移

计算机表示数字正负不是用+ -加减号来表示,而是用最高位数字来表示,0表示正,1表示负 有符号右移 若正数,高位补0,负数,高位补1 -> 一句话概括:高位补符号位 正数 例如:8 >> 2 偶数情况 8的二进制为 0000 0000 0000 0000 0000 0000 0000 1000 右移两位后 0000 0000 0000 0000 0000 0000 000...

liubintao的扫盲之路 7135

揭秘AI人工智能中Stable Diffusion的模型微调技巧

Stable Diffusion作为一种强大的文本到图像生成模型,在艺术创作、设计、娱乐等多个领域展现出了巨大的应用潜力。然而,其默认的模型输出可能无法满足特定用户或特定场景的个性化需求。本文章的目的在于深入揭秘Stable Diffusion的模型微调技巧,让读者能够根据自己的需求对模型进行定制化调整,生成符合特定风格、主题或要求的图像。范围涵盖了从基础概念到实际操作,从理论原理到项目实战的全方位内容,旨在为读者提供一个系统且深入的学习指南。

大模型应用工坊 950

YOLO11改进-注意力-引入级联组注意力机制(Cascaded Group Attention, CGA)

输入特征拆分:输入特征进入 CGA 模块后,被均匀拆分为个部分,每个部分作为一个注意力头的输入,这样每个头关注输入特征的不同部分,实现特征的并行处理,同时为提高注意力多样性奠定基础。注意力头计算单元:每个注意力头包含三个线性投影层、、用于将输入特征映射到不同子空间,以及计算自注意力的单元。在计算过程中,通过注意力头之间的级联操作,前一个头的输出会累加到下一个头的输入上,实现特征的逐步细化。

qq_64693987的博客 2490

Java左移、右移和无符号右移笔记

通过其它文章学习了Java左移和右移方面的知识,现在将几个博主写的文章进行整合起来,方便学习起来方便些。 一、原码、反码和补码 在开始java位运算的知识之前,我们先来了解几个基础的概念,原码,反码,补码。 1、原码 原码是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1,其余位表示数值的大小。 数值十进制5 [+5]=[00000101](原码) [ - 5]=[10000101](原码) 2、反码 反码..

night_iv的专栏 1707

【声纳技术】声呐时间反转镜技术:从被动聚焦到主动空间复用

时间反转镜技术以其独特的物理机制,为水声通信与声呐探测提供了一条绕过传统自适应均衡器的新路径。被动时间反转利用接收端的空间分集实现脉冲压缩,结构简洁、计算高效;主动时间反转则通过发射端预编码,将多径能量引导至目标位置,为多用户下行链路的空间复用奠定了物理基础。从Kuperman等人在海洋中首次验证声学时间反转镜,到TR-MIMO声呐的湖试验证,再到VTRM-CRK多用户通信系统的海试成功,该技术已从理论概念逐步走向工程实用。

u012133341的博客 55

>>有符号右移和>>>无符号右移

做下面这道题目的时候,如果用有符号右移>>,那碰到这个测试用例的时候:11111111111111111111111111111101,由于会一直在高位补1,所以会陷入死循环,超出时间限制。>>:溢出位舍弃,空出来的位用原来数的最高位补齐(有可能是用1来补位,也有可能是用0补位)>>>而无符号右移补高位的时候一定用的是0,跟符号位没有关系,所以叫无符号右移。总结:>>之所以叫有符号右移,是因为补高位的时候用的是符号位来补。所以我们需要高位补0,于是将>>换成>>>>>和>>>都是右移。

weixin_47414034的博客 1363

元数据治理实战:构建企业数据地图与血缘体系

元数据(Metadata)是描述数据的数据,是你能了解“数据是怎么来的”、“它是做什么的”、“能不能用”的基础信息。📌 举个例子:order_idstringods_order定义:平台内用户在订单系统中产生的唯一订单编号更新时间:每天凌晨 2 点,由 Airflow 调度任务生成所属人:张三(数据开发部)🔍 这些信息本身不直接参与计算,但它们是数据可管理、可追踪、可评估的基础。模块实战建议元数据类型技术 + 业务 + 操作元数据三类统一治理治理路径。

晴天彩虹雨的博客 290

使用Python实现深度学习模型:智能光污染监测与管理

本项目将通过以下几个步骤实现智能光污染监测:收集光污染图像数据数据预处理构建深度学习模型训练模型评估模型部署模型用于实时监测通过本文介绍的步骤,我们实现了一个使用Python和深度学习技术的智能光污染监测与管理系统。该系统能够自动识别光污染源,为相关管理部门提供科学依据,以便更好地规划和管理城市照明。同时,这一方法还可以扩展到其他环境监测领域,为环境保护贡献力量。

Echo_Wish 598

java中移位运算<<左移 >>右移 <<<无符号右移 详解

java中移位运算<<左移 >>右移 <<<无符号右移 详解 目录 java中移位运算<<左移 >>右移 <<<无符号右移 详解 概念 代码举例 过程解释 <<左移 >>右移 >>>无符号右移 实际应用 概念 <<:左移 左边最高位丢弃,右边补齐0 >>:右移 最高位是0,左边补齐0;最高为是1,左边补齐1 >>>:无

一蓑烟雨任平生 1万+

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

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

关于C语言中的左移与右移

总结 ** 1. 左移时总是移位和补零,无论是有符号类型数据还是无符号类型数据都统称为逻辑左移。 2. 右移时无符号数是移位和补零,此时称为逻辑右移; 3. 右移时而有符号数大多数情况下是移位和补最左边的位(也就是补最高有效位),移几位就补几位,此时称为算术右移。 ** 1、双目运算符 位移位运算符是将数据看成二进制数,对其进行向左或向右移动若干位的运算。 位移位运算符分为左移和右移两种,均为双目运算符。 例如: 8 >> 3 (意思是8向右移动3位)第一运算对象是移位对象,第二个运算对

weixin_43313697的博客 1万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Java中的左移、右移详细分析

<<表示左移,不分正负数,低位补0; 注:以下数据类型默认为byte-8位 左移时不管正负,低位补0 正数:**r = 20 << 2**   20的二进制补码:0001 0100   向左移动两位后:0101 0000        结果:r = 80 负数:**r = -20 << 2**   -20 的二进制原码 :1001 0100 ...

The best are water的博客 2万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

C语言中无符号数和有符号数的左移和右移

在单片机开发中,通常会使用左移和右移操作做快速的乘法和除法运算。 例如,将0x0001左移1位,相当于乘以2^1左移2位相当于乘以2^2,以此类推,左移n位,相当于乘以2^n。右移则相当于除以2^n。 那么对于无符号数和有符号数,对于左移和右移的操作分别是如何呢?下面通过实验来进行验证: 对于无符号数的左移和右移,代码片段如下: void main(void){ static UINT16 sTemp; sTemp = 0x0001; sTemp = sTemp

zj01jx的博客 1万+

左移、右移理解

左移运算符 << 定位:双目运算符; 功能:把左移运算符(<<)左边的运算数的各二进制位全部左移若干位,移动的位数由左移运算符右边的数指定,高位舍掉,低位补0 右移运算符 >> 定位:双目运算符; 功能:把右移运算符(>>)左边的运算数的各二进制位全部右移若干位,移动的位数由右移运算符右边的数指定; 对于有符号数,在右移时,符号位将随同移动: 当有符号数为正数时,最高位补0 当有符号数为负数时,最高位也就是符号位为1,最高位补0或者补1,.

基咯咯 1万+

算术左移,逻辑左移,算术右移,逻辑右移之间的区别

1.算术左移,逻辑左移: 都是在右边补0: 比如 00101011 算术左移一位:01010110 逻辑左移一位:01010110 对于二进制的数值来说左移n位等于原来的数值乘以2的n次方 比如00011010十进制是26,左移两位后是01101000转成十进制是104恰好是26的4倍。 ps:这种倍数关系只适用于左移后被舍弃的高位不含1的情况,否则会溢出。 2.算术右移,逻辑右移 逻辑右移很简单,只要将二进制数整体右移,左边补0即可 如10101101逻辑右移一位为01010110 算术右移符号位要一起移

a1017611124的博客 1万+

Java学习手册:无符号左移&无符号右移&有符号右移

一、无符号右移“>>”与有符号右移“>>>” Java提供了两种右移运算符:“>>”和">>>"。其中,“>>”被称为有符号右移运算符,“>>>”被称为无符号右移运算符,它们的功能是将参与运算的对象对应的二进制数右移指定的位数。二者的不同点在于“>>”在执行右移操作时,若参与运算的数字为正数,则在...

浩比的专栏 9299

逻辑左移、逻辑右移、算术左移、算术右移区别

第一种观点: 逻辑左移=算数左移,右边统一填0 ,最高位移入cf 逻辑右移,左边统一添0 ,最低位移入cf 特殊:算数右移,左边添加的数和符号位有关,最低位移入cf e.g:1010101010,其中[]是添加的位 逻辑左移一位:010101010[0] 算数左移一位:010101010[0] 逻辑右移一位:[0]101010101 算数右移一位:[1]101010101 算术右移的2种实现方式(结果是相同的): 1.符号位不变,数值位右移,最低位移入cf,最高位数值位填符号位的值(1或0); 2

可儿的博客 1万+

算数左移、逻辑右移、算数右移、逻辑右移

算术左移和逻辑左移一样都是右边补0 ○ 算术左移(适用于有符号数) § 高位移出,低位补0(要注意数据位最高位为1时极有可能溢出) § 比如 0010 1011B 算术左移一位:01010110B § 比如 1000 1011B 算术左移一位:1001 0110B(×) § 1000 1011B算术左移1位得到 0001 0110B这种移动的方式虽然正确,但是结果却是错误的,因为溢出了。一个负数×2后变成了正数,所以溢出。 § 总结起来就是,算术左移,因为带有符号位,如果想要移位之后

DongZhaoCheng 1万+

逻辑左移,逻辑右移,算术左移,算术右移的区分

逻辑左移(SHL)和算数左移(SAL),规则相同,右边统一添0 逻辑右移(SHR),左边统一添0 算数右移(SAR),左边添加的数和符号有关 (正数补0,负数补1) 比如一个有符号位的8位二进制数11001101,逻辑右移不管符号位,如果移一位就变成01100110。算术右移要管符号位,右移一位变成11100110。 e.g:1010101010,其中[]位是...

勇往直前的博客 1万+

通过原码、反码、补码彻底搞清左移、右移、无符号右移

文章目录原码、反码、补码有符号右移>>无符号右移>>>有符号左移<<总结有无符号 原码、反码、补码 正数 正数的原码、反码、补码都是该数字的二进制表示。 首先我们需要知道,计算机中的移位运算都是以二进制补码形式进行的,就像我们的Integer.toBinaryString(num),其转化出来的数字就是补码的形式。在计算机中是没有正负号的,正数用0表示,负...

7193

java中的左移、右移、无符号右移

简明扼要总结用法,与原理

初心不忘、始终方得 1961

为什么右移有「有无」符号之别,而左移却没有?

在众多语言中,都提供了关于位操作符,但 **为什么右移有“有无”符号之别,而左移却没有?**,本文一步步讲述左移、有符号右移、无符号右移,以此来揭开位移的面纱,最终探究答案,囿于本人知识与能力,如有纰漏,敬请指出!

YopenLang的博客 2555

无符右移和带符号左移/右移

带符号右移 >> 带符号左移<< 无符号右移>>> 没有无符号左移 在计算机中,不用+-来表示正负数,用最高位是0还是1来表示正负数,0表示正,1表示负 高位在左,低位在右,左移是乘,右移是除 1.带符号右移 >> 简算:[5/(2^2)=1] 正数例如 5>>2(正数高位补0) 首...

weixin_43224539的博客 2255
上一篇: 指针变量的赋值与引用&&二重指针
下一篇: C&&C++&&VB&&java
上吧皮卡丘
博客等级 码龄11年 26粉丝 70原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值