Java位运算符详解

2023-11-05

按位与运算符(&)

参加运算的两个对象,按二进制位进行“或”运算。 运算规则:0|0=0;   0|1=1;   1|0=1;    1|1=1; 
      即 :参加运算的两个对象只要有一个为1,其值为1。 
例如:3|5 即 0000 0011 | 0000 0101 = 0000 0111   因此,3|5的值得7。  
  
另,负数按补码形式参加按位或运算。 “或运算”特殊作用: 
(1)常用来对一个数据的某些位置1。 
方法:找到一个数,对应X要置1的位,该数的对应位为1,其余位为零。此数与X相或可使X中的某些位置1。 
例:将X=10100000的低4位置1 ,用 X | 0000 1111 = 1010 1111即可得到。 
  
异或运算符(^) 
参加运算的两个数据,按二进制位进行“异或”运算。 运算规则:0^0=0;   0^1=1;   1^0=1;   1^1=0; 
   即:参加运算的两个对象,如果两个相应位为“异”(值不同),则该位结果为1,否则为0。 
  
“异或运算”的特殊作用: 
(1)使特定位翻转找一个数,对应X要翻转的各位,该数的对应位为1,其余位为零,此数与X对应位异或即可。 
例:X=10101110,使X低4位翻转,用X ^ 0000 1111 = 1010 0001即可得到。 


(2)与0相异或,保留原值 ,X ^ 0000 0000 = 1010 1110。 
从上面的例题可以清楚的看到这一点。 
取反运算符(~) 
参加运算的一个数据,按二进制位进行“取反”运算。 
运算规则:~1=0;   ~0=1; 
      即:对一个二进制数按位取反,即将0变1,1变0。 
  
使一个数的最低位为零,可以表示为:a&~1。 
~1的值为1111111111111110,再按“与”运算,最低位一定为0。因为“~”运算符的优先级比算术运算符、关系运算符、逻辑运算符和其他运算符都高。 左移运算符(<<) 
将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。 
例:a = a << 2 将a的二进制位左移2位,右补0, 左移1位后a = a * 2;  
若左移时舍弃的高位不包含1,则每左移一位,相当于该数乘以2。 

 

 


右移运算符(>>) 
将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。 操作数每右移一位,相当于该数除以2。 例如:a = a >> 2 将a的二进制位右移2位, 左补0 or 补1 得看被移数是正还是负。 
  
>> 运算符把 expression1 的所有位向右移 expression2 指定的位数。expression1 的符号位被用来填充右移后左边空出来的位。向右移出的位被丢弃。 例如,下面的代码被求值后,temp 的值是 -4: 
  -14 (即二进制的 11110010)右移两位等于 -4 (即二进制的 11111100)。 
  var temp = -14 >> 2   
  无符号右移运算符(>>>) 
  
>>> 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。 例如:var temp = -14 >>> 2 
变量 temp 的值为 -14 (即二进制的 11111111 11111111 11111111 11110010),向右移两位后等于 1073741820 (即二进制的 00111111 11111111 11111111 11111100)。 

 
复合赋值运算符 
位运算符与赋值运算符结合,组成新的复合赋值运算符,它们是: &=    例:a &= b        相当于a=a & b 
|=    例:a |= b        相当于a=a | b >>=   例:a >>= b       相当于a=a >> b <<= 例:a <<= b       相当于a=a << b 
^=   例:a ^= b       相当于a=a ^ b 
运算规则:和前面讲的复合赋值运算符的运算规则相似。  
不同长度的数据进行位运算 
如果两个不同长度的数据进行位运算时,系统会将二者按右端对齐,然后进行位运算。 
以“与”运算为例说明如下:我们知道在C语言中long型占4个字节,int型占2个字节,如果一个long型数据与一个int型数据进行“与”运算,右端对齐后,左边不足的位依下面三种情况补足, 
(1)如果整型数据为正数,左边补16个0。 (2)如果整型数据为负数,左边补16个1。 (3)如果整形数据为无符号数,左边也补16个0。 如:long a=123;int b=1;计算a & b。  如:long a=123;int b=-1;计算a & b。  
如:long a=123;unsigned int b=1;计算a & b。

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java位运算符详解 的相关文章

  • 【C++登山之路之语法高山 】—— 命名空间+缺省参数+函数重载(万字详解,图片演示,结构原理)

    目录 命名空间 命名空间定义 命名空间的使用 缺省参数 函数重载 函数重载底层原理 C和C 的相互调用 即使前方的路依旧艰险且看不清方向 也不要停止你的脚步 ps Pexels 上的 Creative Vix 拍摄的图片 命名空间 在C C
  • python基础语法学习一

    大部分参考自菜鸟教程 文中出现的代码 带 gt gt 的代码为交互式命令行 其他为脚本 目录 前言 运行python 正文 1 注释 2 代码块 3 多行语句 4 数据类型 4 1字符串 4 1 1 字符串格式化 4 1 2 f strin
  • 实现圆边框的渐变色

    交流群号 611979698 目前还没啥人 欢迎加入一起探讨学习 微信小程序 可通过伪元素来实现 效果图如下 index wxml代码
  • C++ stack使用方法详细介绍

    更多关于STL文章 STL学习笔记 容器适配器 stack Class stack lt gt 实现出一个 stack 也称为LIFO 后进先出 你可以使用 push 将任意数量的元素放入 stack 也可以使用 pop 将元素依其插入的相
  • js中every()和some()的用法

    1 every 与some 方法都是JS中数组的迭代方法 every 是对数组中每一项运行给定函数 如果该函数对每一项返回true 则返回true some 是对数组中每一项运行给定函数 如果该函数对任一项返回true 则返回true 1
  • 如何实现“点击回到顶部”的功能?

    五种方法 锚点 scrollTop scrollTo scrollBy scrollIntoView 锚点 使用锚点链接是一种简单的返回顶部的功能实现 该实现主要在页面顶部放置一个指定名称的锚点链接 然后在页面下方放置一个返回到该锚点的链接
  • Redis数据类型详解(String/List/Hash/Set/SortedSet)

    String set get set key value nx nx key不存在 设置成功 如果key存在 则设置失败 分布式锁 多个客户端对同一个key设置 设置成功后获得锁 其它获取锁失败 set key value xx xx ke
  • linux下rocketmq安装-单机

    1 环境准备 jdk 这里用的jdk8 maven 3 6 1 这里说一下maven安装 下载maven 3 6 1 root devops 02 wget https archive apache org dist maven maven
  • 关于人工智能若干问题的再思考

    1 有人认为 人工智能就是人类在了解自己 认识自己 实际上 人工智能只是人类试图了解自己而已 因为 我是谁 这个坐标原点远远还没有确定下来 2 我是谁 的问题就是自主的初始问题 也是人所有智能坐标体系框架的坐标原点 记忆是这个坐标系中具有方
  • 作为开发人员,这四类Code Review方法你都知道吗?

    本文翻译自 https dzone com articles 4 types of code reviews any professional developer 转载请注明出处 葡萄城官网 葡萄城为开发者提供专业的开发工具 解决方案和服务
  • 行人重识别(Person Re-Identification) ——Market-1501 数据集介绍、命名说明及pytorch数据类型转化

    开头瞎叭叭 每日一个小知识 pycharm快速注释操作 ctrl Market 1501数据集简介 1 该数据集在清华大学校园中采集 于夏天拍摄 在 2015 年构建并公开 2 包括由6个摄像头 其中5个高清摄像头和1个低清摄像头 拍摄到的
  • 从B树、B+树、B*树谈到R 树

    从B 树 B 树 B 树谈到R 树 作者 July weedge Frankie 编程艺术室出品 说明 本文从B树开始谈起 然后论述B 树 B 树 最后谈到R 树 其中B树 B 树及B 树部分由weedge完成 R 树部分由Frankie完
  • MySQL——MySQL的基础操作部分

    使用命令行登录 mysql u root p 直接敲击回车后输入密码即可 当看到出现 mysql gt 的符号之后 就表示已经进入到了 系统中 就可以输入 的命令对数据库进行操作了 查看数据库 使用命令查看所有的数据库 注意在使用MySQL
  • 【福建事业单位-综合基础知识】03行政法

    福建事业单位 综合基础知识 03行政法 1 行政法概述 原则重点 行政主体范围 行政行为 总结 二 行政处罚 2 1行政处罚的种类 总结 三 行政强制措施 总结 四 行政复讼 总结 五 行政诉讼 总结 行政法框架 1 行政法概述 原则重点
  • Openstack之dashboard服务、云主机管理、cinder块存储服务

    搭建Openstack环境以及Openstack认证服务 Openstack之glance镜像服务 nova计算服务 Openstack之neutron网络服务 启动一个实例 Openstack之dashboard服务 云主机管理 cind
  • UFT的使用

    UFT是一种自动化测试工具 以VBScript为内嵌语言 其支持功能测试和回归测试自动化 可用于软件应用程序和环境的测试 基本功能包括 创建测试 检验数据 增强测试 运行测试脚本 分析测试结果 维护测试 视图分为 关键字视图和专家视图 UF
  • matlab敏感性分析代码,sobol敏感性分析 matlab代码

    sobol 参数敏感性分析 参考 csdn https blog csdn net xiaosebi1111 article details 46517409 wiki https en wikipedia org wiki Varianc
  • spring框架:简介+依赖注入

    目录 一 spring简介 二 创建项目 三 spring创建对象 四 SpringBean管理 1 注入实现 XML 2 注入实现 注解 一 spring简介 spring诞生与2003年 是一个轻量级的 IOC Inversion Of
  • Guns 技术文档 v5.1

    stylefeng 2018 10 17 10 22 字数 27433 阅读 4795 Guns 技术文档 v5 1 stylefeng技术文档 Guns 技术文档 v5 1 1 序言 1 1 文档简介 1 2 Guns教程 1 3 获取帮

随机推荐

  • 为何会频繁收到垃圾短信?使用这3种方法,跟垃圾短信说再见

    为何会频繁收到垃圾短信 使用这3种方法 跟垃圾短信说再见 在这个信息传播途径比较广泛的年代 我们会经常收取到一些垃圾短信 影响我们正常的生活 这些号码中大部分显示的都是一串很长的数字 有的时候还会收到模仿官方的号码的短信类型 这些垃圾信息
  • IOException parsing XML document from ServletContext resource

    错误是我们学习的机会 不要错过明白明这个错误原因的机会 那么我们就可以更加深刻得理解这个问题 在启动springmvc的程序去访问的时候 报IO异常 一般情况下IO异常就是文件找不到 详细错误如下 org springframework b
  • python程序打包exe,亲测版

    经过鄙人的多次摸索 总结如下 用到的打包工具是Pyinstaller 如果python安装没问题的话 在cmd控制台里输入 pip install Pyinstaller 如果下载失败 多半是网络的原因 Pyinstaller安装成功后 进
  • seaborn.heatmap参数介绍

    Seaborn的heatmap各个参数介绍 seaborn heatmap seaborn heatmap data vmin None vmax None cmap None center None robust False annot
  • 微信小程序钱包支付页面案例

    小程序钱包页面 效果图 WXML代码
  • 数据结构 图 part1

    文章目录 图 定义 形式化定义 ADT 有向图和无向图 有向图 无向图 完全有向图和完全无向图 完全无向图 完全有向图 术语 邻接顶点 子图 权 网 度 顶点的度 路径 路径长度 连通图与连通分量 强连通图与强连通分量 存储结构一 邻接矩阵
  • realme支持鸿蒙系统,realme Q3 Pro:接受不了这四个缺点,请谨慎入手!

    64MP主摄 可能不是你想的那样 realme Q3 Pro的64MP像素后置主摄传感器也是发布会中没有提到的 其实这个主摄并非GT系列的IMX682传感器 而是豪威科技的OV64B传感器 IMX682的底更大 向来有底大一级压死人的说法
  • MySQL错误处理--1146错误

    在MySQL的主从复制过程中 出现了1146错误 提示的错误原因是 在默认的数据中找不到指定的表 show slave status G 现实的同步状态 Slave IO Running YESSlave SQL Running NoLas
  • WebGL(二)——什么是WebGL

    WebGL 二 什么是WebGL 什么是WebGL WebGL 全写Web Graphics Library 字面意义理解就是web图像库 是一种3D绘图协议 也可以说是一个负责图形处理的JavaScript API 可在任何兼容的Web浏
  • 蒙特卡洛方法(入门详解)

    一 定义 蒙特卡洛又称统计试验法 是基于概率论的算法 其实质就是将问题转化为一个概率问题 并用计算机模拟产生一堆随机数 再对随机数进行统计工作 蒙特卡洛模拟方法 建立概率模型 计算机模拟 数理统计 二 原理 大数定理证明 在大样本的情况下
  • 顶刊IJCV 2022!基于深度学习的图像去模糊综述来了!

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 点击进入 gt CV 微信技术交流群 转载 机器之心 本文提出了一个图像去模糊方向的综述 来自澳大利亚国立大学 中山大学 美国加州大学 Merced 分校 日本乐天研究
  • 前端不使用 i18n,如何优雅的实现多语言?

    前言 关于ERP管理系统的多语言 或者其他应用的多语言一直是我们比较麻烦的问题 大部分是使用 i18n 在代码里进行配置 如果想要修改语言就要自己去改代码 今天我们分享一下如何不使用 i18n 去实现多语言 用到以下的技术栈 ERP管理系统
  • [Python图像处理] 四十一.Python图像平滑万字详解(均值滤波、方框滤波、高斯滤波、中值滤波、双边滤波)

    该系列文章是讲解Python OpenCV图像处理知识 前期主要讲解图像入门 OpenCV基础用法 中期讲解图像处理的各种算法 包括图像锐化算子 图像增强技术 图像分割等 后期结合深度学习研究图像识别 图像分类应用 希望文章对您有所帮助 如
  • 安卓手机玩游戏卡顿怎么解决_告别卡顿 打造Android手机的“游戏模式”

    如今的手游 除了大型3D单机游戏以外 对硬件的需求其实谈不上太过苛刻 比如 王者荣耀 哪怕是骁龙430级别的处理器也能流畅运行 而之所以游戏过程中偶尔出现卡顿 可能还是一些细节设置没有优化到位 有的手机已经自带游戏模式了 问题是没有这个功能
  • 烂大街的 Spring 循环依赖问题,你真以为自己会了吗?

    什么是循环依赖 所谓的循环依赖是指 A 依赖 B B 又依赖 A 它们之间形成了循环依赖 或者是 A 依赖 B B 依赖 C C 又依赖 A 形成了循环依赖 更或者是自己依赖自己 它们之间的依赖关系如下 这里以两个类直接相互依赖为例 他们的
  • google GMS测试环境搭建详细教程

    1 解压jdk tar xvf jdk 8u172 linux x64 tar gz 2 配置java环境 sudo chmod 777 etc profile sudo vim etc profile 3 测试java java vers
  • 树莓派基础之嵌入式开发概述

    树莓派初见 一 嵌入式概述 二 树莓派开发笔记 三 Linux库引入之分文件编程 四 Linux库引入之动态库和静态库 五 静态库的生成和使用 六 动态库的生成和使用 一 嵌入式概述 1 什么是嵌入式 a 嵌入式即嵌入式系统 IEEE 美国
  • 边缘计算初探:什么是边缘计算,它能做什么?

    边缘计算是指在靠近智能设备或数据源头的一端 提供网络 存储 计算 应用等能力 达到更快的网络服务响应 更安全的本地数据传输 边缘计算可以满足系统在实时业务 智能应用 安全隐私保护等方面的要求 为用户提供本地的智能服务 边缘计算一般由云端管理
  • 比较C#和Java

    本文对比了C 与Java这两种编程语言 这两种语言都具有自动垃圾回收以及运行时编译执行的特点 并且两者的语法都有主要继承自C语言 C 因此二者有很多相似之处 但由于C 是作为C 和Java的混合体而在Java之后所创造的 因此C 相较Jav
  • Java位运算符详解

    按位与运算符 参加运算的两个对象 按二进制位进行 或 运算 运算规则 0 0 0 0 1 1 1 0 1 1 1 1 即 参加运算的两个对象只要有一个为1 其值为1 例如 3 5 即 0000 0011 0000 0101 0000 011