二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符
说明
所有的位运算符操作的都是二进制,而不是我们日常生活中常用的十进制。
在系统中,一个字节占8位。
按位与运算符(&)
参加运算的两个数据,按二进制位进行“与”运算。
运算规则:如果两个二进制数的同一个位数上的数都为1,则当前位为1,否则为0.
示例:0&0=0; 0&1=0;
按位或运算符(|)
参加运算的两个对象,按二进制位进行“或”运算。
运算规则:如果两个二进制数的同一个位数上的数有一个不为0则当前位为1,否则为0.
示例:0|0=0; 0|1=1; 1|0=1; 1|1=1;
取反运算符(~)
参加运算的一个数据,按二进制位进行“取反”运算。
示例:~1=0; ~0=1;
异或运算符(^)
用于比较两个二进制数的相应位。在执行按位异或运算时,如果两个二进制数的相应位都为1或两个二进制数的相应位都为0,则返回 0;如果两个二进制数的相应位其中一个为1,另一个为0,则返回 1;
示例:10^15= 5
二进制算法:
位移运算符(<<)和(>>)
位移运算符分为左位移运算符“<<”和右位移运算符“>>”,分别用于向左和向右执行位移运算。对于X<<N 或 X>>N 形式的运算,含义是将 X 向左或向右移动 N 位,X 的类型可以是 int,uint,long,ulong,byte,sbyte,short 和ushort 。需要注意的是,byte,sbyte,short,和 ushort 类型的值在进行位移操作后值的类型讲自动转换成 int 类型。
左移位运算符(<<)
“有符号”左移位运算符(<<)将运算符左边的运算对象向左移动运算符右侧指定的位数(在低位补0)。
例如 3 << 2。
首先把3转换为二进制数字00000000 00000000 00000000 00000011,然后把该数字高位(左侧)的两个零移出,其他的数字都往左平移2位,最后在低位(右侧)空位补零。则得到的最终结果是00000000 00000000 00000000 00001100,则转换为十进制是12。
左移1位相当于乘以2,例如 3 << 2 =12 则是将数字3左移2位 = 3*2*2.
在数字没有溢出的前提下,对于正数和负数,左移一位都相当于乘以2的1次方,左移n位就相当于乘以2的n次方。
右移位运算符(>>)
“有符号”右移位运算符(>>)则将运算符左边的运算对象向右移动运算符右侧指定的位数。
“有符号”右移位运算符使用了“符号扩展”:若值为正,则在高位插入0;若值为负,则在高位插入1。
>>运算规则:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,移位后得到的数字为正数则补0,负数补1。
例如11 >> 2,则是将数字11右移2位
11的二进制形式为:00001011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是00000010.转换为十进制是3.
右移一位相当于除2,右移n位相当于除以2的n次方。
Java也添加了一种“无符号”右移位运算符(>>>),它使用了“零扩展”:无论正负,都在高位插入0。
小结
位移运算符右移一位相当于除以2,左移一位(在不溢出的情况下)相当于乘以2;移位运算速度高于乘除运算。
位运算符的优先级
~的优先级最高,其次是<<、>>和>>>,再次是&,然后是^,优先级最低的是|。
二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符相关推荐
- Java中「与运算,或运算,异或运算,取反运算。」
Java中「与运算,或运算,异或运算,取反运算.」 文章目录 Java中「与运算,或运算,异或运算,取反运算.」 Java中的「与运算(AND) & 」 规则 :都为1时才为1,否则为0 Ja ...
- java中与运算,或运算,异或运算,取反运算
(&和|运算时候1当成true,0当做false) 一:& //与运算 & 规则 :都为1时才为1 System.out.println( 7 & 9 ...
- java或异运算_java中与运算,或运算,异或运算,取反运算
//与运算 & 规则 :都为1时才为1 System.out.println( 7 & 9); /* * 7二进制 0111 * 9二进制 1001 * ----------- ...
- C++ 笔记(10)— 运算符(算术、关系、逻辑、位运算、赋值和其它运算符)
运算符是一种告诉编译器执行特定的数学或逻辑操作的符号. C++ 内置了丰富的运算符,并提供了以下类型的运算符: 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 其它运算符 1. 算术运算符 ...
- MySQL—运算符详解(算术、比较、逻辑、范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符)
MySQL--运算符详解 知识纲要 算术运算符 比较运算符 逻辑运算符 范围运算符与集合运算符 模糊查询 NULL值运算与null值判断 位运算符 1.算术运算符 加 减 乘 除 取余 div 也表示 ...
- day017:Java进制转换、原码反码补码、位运算、位移运算符
一.进制介绍: 1.进制:指进位制,表示某一位置上的数,运算时是逢X进一. 十进制就是逢十进一,二进制就是逢二进一,八进制就是逢八进一. 2.Java中默认的数值都是十进制,如果要输入其他进制,在数值 ...
- c语音异或运算符_c语言异或(c语言异或运算例子)
用异或算法逐字节对文件C进行加密,输出到另外一个新文件D中. #include #include int main(){ FILE *p1,*p2; char ch,n; p1=fopen("D:\\ ...
- 重载运算与类型转换——基本概念,输入和输出运算符,算术和关系运算符,赋值运算符,下标运算符,递增和递减运算符,成员访问运算符...
一.基本概念 重载的运算符时具有特殊名字的函数:它们的名字由关键字operator和其后要定义的运算符号共同组成.和其他函数一样,重载的运算符也包含返回类型.参数列表以及函数体. 重载运算符函数的参数 ...
- linux运算_CentOS「linux」学习笔记22:算术运算符、逻辑运算符、关系运算符
linux基础操作:主要介绍啦算术运算符.逻辑运算符.关系运算符 1.算术运算符[主要用来计算数值] 注意使用expr运算时运算符和数值之间需要有空格,其他方式运算时不能有空格. 常用算术运算符号: ...
最新文章
- 【Ant Design Pro 一】 环境搭建,创建一个demo
- shell如何将标准错误输出重定向为标准输出
- SVN在centos5.4的安装步骤:
- 微星笔记本电脑恢复出厂或者一键还原图文流程
- AngularJS基础01 从HelloWorld说起
- 淘宝服务端高并发分布式架构的十四次演进之路
- idea:打包jar(原文by曲高终和寡)
- asp.net 中textbox如何自动换行
- 文献记录(part30)--DCR Disentangled component representation for sketch generation
- zepto学习之路--源代码提取
- C# 可空类型和空接合运算符(??)
- jQuery查找标签--选择器,筛选器,模态对话框, 左侧菜单栏
- Goods:查询某个用户的购物车条目以及添加购物车条目
- 拆解任務與目標、按時完成,不再被deadline追著跑
- REST是否会步SOAP的后尘?
- Dbgview 罕见的一次报错问题解决
- 在未来税制下个人所得税信息管理系统建设设想
- 【BZOJ3470】Freda’s Walk
- PyTorch深度学习-跟着小土堆学习
- 计算机的收获初一作文,初一开学一个月的收获和感受作文