Java 笔记-移位运算符

STM32F103 CAN通信避坑指南:从标准库配置到收发测试的完整流程 本文详细介绍了STM32F103 CAN通信的实现流程,从标准库配置到收发测试,帮助开发者避开常见陷阱。内容涵盖硬件连接、波特率计算、过滤器配置及错误处理等关键环节,提供实用的代码示例和调试技巧,确保CAN通信的稳定性和可靠性。 阅读详情

说明:

  移位运算符
  移位运算符就是在二进制的基础上对数字进行平移。按照平移的方向和填充数字的规则分为三种:<<(左移)、>>(带符号右移)和>>>(无符号右移)。
  在移位运算时,byte、short和char类型移位后的结果会变成int类型,对于byte、short、char和int进行移位时,规定实际移动的次数是移动次数和32的余数,也就是移位33次和移位1次得到的结果相同。移动long型的数值时,规定实际移动的次数是移动次数和64的余数,也就是移动66次和移动2次得到的结果相同。
  三种移位运算符的移动规则和使用如下所示:
  <<运算规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零。
  语法格式:
  需要移位的数字 << 移位的次数
  例如: 3 << 2,则是将数字3左移2位
  计算过程:
  3 << 2
  首先把3转换为二进制数字0000 0000 0000 0000 0000 0000 0000 0011,然后把该数字高位(左侧)的两个零移出,其他的数字都朝左平移2位,最后在低位(右侧)的两个空位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 1100,则转换为十进制是12.数学意义:
  在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
  >>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1.
  语法格式:
  需要移位的数字 >> 移位的次数
  例如11 >> 2,则是将数字11右移2位
  计算过程:11的二进制形式为:0000 0000 0000 0000 0000 0000 0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000 0000 0000 0000 0010.转换为十进制是3.数学意义:右移一位相当于除2,右移n位相当于除以2的n次方。
  >>>运算规则:按二进制形式把所有的数字向右移动对应巍峨位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。
  其他结构和>>相似。
  小结
  二进制运算符,包括位运算符和移位运算符,使程序员可以在二进制基础上操作数字,可以更有效的进行运算,并且可以以二进制的形式存储和转换数据,是实现网络协议解析以及加密等算法的基础。

 

实例操作:

  1. public class URShift {
  2.     
  3.     public static void main(String[] args) {
  4.         int i = -1;
  5.         i >>>= 10;
  6.         //System.out.println(i);
  7.         mTest();
  8.     }
  9.     
  10.     public static void mTest(){
  11.         //左移
  12.         int i = 12; //二进制为:0000000000000000000000000001100
  13.         i <<= 2; //i左移2位,把高位的两位数字(左侧开始)抛弃,低位的空位补0,二进制码就为0000000000000000000000000110000
  14.         System.out.println(i); //二进制110000值为48;
  15.         System.out.println("<br>");
  16.         
  17.         //右移
  18.         i >>=2; //i右移2为,把低位的两个数字(右侧开始)抛弃,高位整数补0,负数补1,二进制码就为0000000000000000000000000001100
  19.         System.out.println(i); //二进制码为1100值为12
  20.         System.out.println("<br>");
  21.         
  22.         //右移example
  23.         int j = 11;//二进制码为00000000000000000000000000001011
  24.         j >>= 2; //右移两位,抛弃最后两位,整数补0,二进制码为:00000000000000000000000000000010
  25.         System.out.println(j); //二进制码为10值为2
  26.         System.out.println("<br>");
  27.         
  28.         byte k = -2; //转为int,二进制码为:0000000000000000000000000000010
  29.         k >>= 2; //右移2位,抛弃最后2位,负数补1,二进制吗为:11000000000000000000000000000
  30.         System.out.println(k); //二进制吗为11值为2
  31.     }
  32.     
  33. }

在Thinking   in   Java第三章中的一段话:  
   
    移位运算符面向的运算对象也是

二进制的“位”。 可单独用它们处理整数类型(主类型的一种)。左移位运算符(<<)能将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。 “有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。这一运算符是C或C++没有的。  
    若对char,byte或者short进行移位处理,那么在移位进行之前,它们会自动转换成一个int。只有右侧的5个低位才会用到。这样可防止我们在一个int数里移动不切实际的位数。若对一个long值进行处理,最后得到的结果也 是long。此时只会用到右侧的6个低位,防止移动超过long值里现成的位数。但在进行“无符号”右移位时,也可能遇到一个问题。若对byte或 short值进行右移位运算,得到的可能不是正确的结果(Java   1.0和Java   1.1特别突出)。它们会自动转换成int类型,并进行右移位。但“零扩展”不会发生,所以在那些情况下会得到-1的结果。

 

TI MSPM0G3507 循迹小车强制寻黑线代码一 一个基于MSPM0微控制器的循迹小车控制系统。系统通过8路循迹传感器检测黑线位置偏差,使用PID算法计算电机控制量。主程序初始化中断、PWM等外设,在按键触发后进入循迹模式。传感器数据处理函数根据检测到的黑线位置返回偏差值(-7到7),PID控制器根据偏差调整左右电机速度。系统还包含限幅处理、中断服务等模块,实现稳定的自动循迹功能。代码结构清晰,展示了嵌入式系统中传感器数据处理、电机控制和PID算法的典型实现方式。 阅读详情

相关推荐

DM9000有线网卡驱动编写

DM9000有线网卡驱动编写 1.DM9000简介   DM9000 是一款完全集成的、性价比高、引脚数少、带有通用处理器接口的单芯片快速以太网控制器。 自 带一个 10/100M PHY 和 4K 双字的 SRAM ,DM9000A 为适应各种处理器提供了 8 位、16 位数据接口访问 内部存储器,DM9000 拥有自动协商功能,DM9000 特性如下:   1.集成自适应 10/100M 收发器。   2.内置 16k 字节的 SRAM。   3.支持硬件帧校验。   4.兼容 3.3V 和 5.0V

weixin_44453694的博客 4672

【一看就懂】移位运算符讲解

关于移位运算符 左移:"<<" , 顾名思义将二进制数整体向左移动,多余的位数进行舍去操作(比如向左移动n位,即将二进制数的前n位舍去),舍去固然意味着要在末尾进行补充,补什么呢,联想到整数的小数点后补位,自然可以知道左移末尾补0。 右移:">>" 以此类推,右移即将二进制数末尾的n位舍去,对左边的高位进行补位。问题来了,左边的高位也是补0吗?答案对了一半。我们知道整型...

油炸嘎啦小丸子 6250

高通8155车机系统里,安卓和QNX是怎么‘打电话’的?聊聊HAB通信框架那些事

本文深入解析了高通8155车机系统中HAB通信框架如何实现安卓与QNX的高效协同。作为异构系统的通信桥梁,HAB通过共享内存和中断信号机制,在多媒体数据传输中展现出零拷贝、硬件加速等优势,成为智能座舱实现实时性与生态丰富性平衡的关键技术。

weixin_42715608的博客 382

【C语言初阶】操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

操作符之 位运算符详解(“ << ”,“ >> ”,“ & ”,“ | ”,“ ^ ”,“ ~ ”)

枫叶先生的博客 5万+

IST——In-System-Test

安全性是自动驾驶平台的关键特性之一,而这些架构中使用的半导体芯片必须保证ISO 26262标准所要求的功能安全方面。为了监控由于现场缺陷导致的故障,在启动和/或关闭期间会自动运行系统内结构测试。当系统内测试(IST,In-System-Test)架构检测到任何永久性缺陷时,驾驶平台会做出响应,以实现系统的故障安全状态。汽车IC采用高质量测试方法进行筛选,以实现接近零的DPPM(每百万缺陷部件)。即使在这样的高测试标准下,由于环境或操作条件的影响,在系统现场运行过程中仍可能出现可靠性缺陷。

weixin_50518899的博客 3207

如何利用Arcgis进行地统计学分析(三):空间插值方法选择与优化

本文深入探讨了在Arcgis中进行地统计学分析时,如何根据探索性数据分析(EDA)结果科学选择与优化空间插值方法。文章对比了IDW、RBF、克里金等主流方法的适用场景与核心参数,并通过实战案例详解了从数据诊断到模型调优的完整流程,强调结合半变异函数与趋势分析进行“对症下药”,以提升插值结果的精度与可靠性。

weixin_29281915的博客 120

移位运算符(详细介绍)

移位运算符

m0_63783532的博客 6813

ArcMap 10.7/10.8启动加载界面后闪退?可能是这个隐藏的Normal.mxt模板文件在搞鬼

本文深入分析了ArcMap 10.7/10.8启动加载界面后闪退的问题,指出Normal.mxt模板文件损坏是常见原因。提供了从定位、删除模板文件到系统级修复的完整解决方案,帮助GIS工程师快速恢复工作流程。

weixin_28523493的博客 331

位运算符(逻辑、移位)详解

位运算符有七个,分为两类:逻辑位运算符:位与(&)、位或(|)、位异或(^)、非位(~)移位运算符:左移()、无符号右移(>>>)

weixin_39724194的博客 2835

如何程序化的将 Wire 文件转换成 STEP、CATIA、DWG、NX、FBX 等格式

Wire 文件是专有格式,只有 Autodesk Alias 软件能够直接打开和编辑。 虽然可以在 Alias 软件中手动打开文件并导出为 STEP,但在实际工作中,经常会遇到需要转换数十甚至数百个文件的场景。如果每次都手动操作软件进行转换,不仅效率低下,还容易出错,批量场景下会非常麻烦。因此,程序化、自动化的转换方案变得至关重要。

weixin_44211633的博客 451

Python爬取小红书种草商品评论数据:从入门到实战全攻略(附反爬+情感分析方案)

Python爬取小红书种草商品评论数据,核心是“抓包找到正确的接口+处理登录验证+合理的反爬策略”。新手不用一开始就追求多笔记批量爬取和情感分析,先把单笔记的评论抓取和存储跑通,再逐步扩展功能。我做的这个系统现在每天帮朋友爬取3-5款美妆产品的评论,自动做情感分析和关键词提取,她再也不用手动翻评论了,效率提升了80%。如果你们在开发中遇到具体问题,比如接口找不到、Cookie过期、IP被封,都可以在评论区留言,我会一一解答。后续也可以出一期小红书笔记种草数据爬取的教程,帮助大家更全面地分析竞品数据。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1350

移位运算符<<、>>、>>>

1.左移运算符() 3.无符号右移运算符(>>>)

萌新 1685

flowable工作流看这一篇就够了(基础篇)

接下来我们构建一个非常简单的请假流程,Flowable引擎需要流程定义为BPMN 2.0格式,这是一个业界广泛接受的XML标准。在Flowable术语中,我们将其称为一个流程定义(process definition)。一个流程定义可以启动多个流程实例(process instance)。流程定义可以看做是重复执行流程的蓝图。在这个例子中,流程定义定义了请假的各个步骤,而一个流程实例对应某个雇员提出的一个请假申请。

qq_38196449的博客 2万+

Java移位运算符笔记

一、Java中有三个移位运算符 左移: 带符号右移:>> (高位添符号位) 无符号右移:>>> (高位添0补齐) 数            x         x>2              x>>>2 17      00010001    00|01000100      00000100|01     00000100|01 -17     11101111    11|101

VicTree的博客 559

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

java笔记——移位运算符

java中的移位运算符 java中一共有三中移位运算符,功能分别如下: <<:左移运算符,向左移位,右边补零 >>:右移运算符,向右移位,如果符号位为0,则左边补0;如果符号位为1,则左边补1 >>>:无符号右移运算符,向右移位,无论符号位是什么,左边都补0 ...

y_chengbo的博客 146

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java 学习笔记01 移位运算符

Java 的基本数据结构如下图: 注意Java中没有无符号数据,也就是说没有无符号的整形数据,这一点一定要注意。 这个在移位操作要注意,java中有三种移位运算符,如下 num 1,相当于num乘以2 >> : 右移运算符,num >> 1,相当于num除以2 >>> : 无符号右移,忽略符号位,空位都以0补齐 假如要统计二进制数据,注意使用无

JackZhangNJU的专栏 309

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

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

【Java学习笔记】移位运算符和逻辑运算符

1.&和&& 按位与:a&b是把a和b都转换成二进制数然后再进行与的运算; 逻辑与:a&&b就是当且仅当两个操作数均为 true时,其结果才为 true;只要有一个为零,a&&b就为零。(短路) 2.|和|| 按位或:a|b是把a和b都转换成二进制数然后再进行或的运算 逻辑或:a||b是只要有一个为真结果就为真。(短路) 3.~ 非 非运算符用符号“~”表示,其运

qingtian12138的博客 306

《Java核心技术》读书笔记之移位运算符

“>>”和“ >>>运算符将用0填充高位;>>运算符用符号位填充高位。没有 对移位运算符右侧的参数需要进行模32的运算(除非左边的操作数是long类型,在这种情况下需对右侧操作数模64)。例如,1

Final Fantasy 738

运算符(Java)学习总结

Java grammar lesson 2(学习总结) -Make a little progress every day 文章目录Java grammar lesson 2(学习总结)前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pa

m0_56774467的博客 1894

三. JAVA运算符

Java运算符是程序操控数据的核心工具,涵盖算术(+ - * / %)、关系(> < ==)、逻辑(&& || !)、位运算(& | ^ <<)及条件(?:)五大类。算术运算注意整数截断,逻辑运算利用短路特性优化执行,位运算适合权限控制等场景。优先级规则遵循“括号 > 单目 > 乘除 > 逻辑”,典型陷阱如true || false && false结果为true(因&&优先级更高)。开发中建议多用括号明确顺序,掌握异或交换值等位技巧,规范对象比较,提升代码健壮性。

weixin_74353123的博客 724

JAVA10_28学习总结(位运算符,流程控制语句)

10_28学习Java,学习了位运算符,各种流程控制语句

weixin_53118395的博客 662

Mac本学java·关于逻辑运算符/短路运算/位运算符2021.2.12学习记录

本作者因为学习Java用的是Mac本,所以内容都是以macOS为主,win及linux的朋友抱歉了

damizhouya的博客 249

Java中的移位运算符

左移运算符 << 运算规则:丢弃左边(高位)指定位数,右边(低位)补0。 实例:定义一个 int 类型数字,int intValue = 12345678,那么这个数字在二进制中的形式如下: 插入图片。。。 int intValue = 12345678; // 以下两个方法都可以打印出二进制形式,不过高位0已被舍弃 System.out.println(Integer.toString(intValue, 2)); System.out.println(Inte...

qq_39314099的博客 5475

Java 位运算符和移位运算符

参考:Bitwise and Bit Shift Operators《Java 编程思想 第3章 操作符》今天学习 Java BitSet 类时,发现对于位运算符和移位运算符的操作有些陌生,所以重新复习一下主要内容: 位操作浅析 位运算符 移位运算符 优先级 问题解析 取值范围 位操作浅析Java 可在整数类型(integral type)数据上进行位(bit)操作整数类型: 字节型(byte,8

u012005313的专栏 7708

Java移位运算符

在java中,移位运算符总共分为三种::左移位运算符(&amp;amp;lt;&amp;amp;lt;)、有符号右移位运算符(&amp;amp;gt;&amp;amp;gt;)、无符号右移位运算符(&amp;amp;gt;&amp;amp;gt;&amp;amp;gt;) 1、左移位运算符(&amp;amp;lt;&amp;amp;lt;) 左移运算符&amp;amp;lt;&amp;amp;lt;使指定值的所有位都

qq_40509039的博客 1622

python左移位运算_python移位运算符

1,二进制方式>>> bin( 1 )'0b1'>>> bin( 10 )'0b1010'>>> a = 0b10>>> a2>>>2,移位运算符( >> << ): 箭头向左就是 向左移位 反正 箭头向右 就是向右位移,移位针对的是二进制如,十进制的1 ---> 对应...

weixin_39578899的博客 5315
上一篇: Php ini_set ini_get可操作配置参数列表
下一篇: MySQL decimal 类型
stefenjun
博客等级 码龄23年 4粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值