java位运算符和位运算表达式
java位运算符和位运算表达式
位运算符是以二进制为单位对操作数进行的操作和运算,位运算的操作数和结果都是整型变量。
运算符 | 运算 | 例子 | 解释 |
~ | 位反 | ~x | 将x按比特位取反 |
>> | 右移 | x>>a | X各比特位右移a位 |
<< | 左移 | X<<a | X各比特位左移a位 |
>>> | 不带符号的右移 | x>>>a | X各比特位右移a位,左边的空位填零 |
注:位运算符中,除~以外,其余均为二元运算符,操作数只能为整型和字符型数据。
补码
Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。补码的规定如下:
对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如:+42的补码为00101010。
对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如:-42的补码为11010110(00101010按位取反再加1:11010101+1=11010110)。
在补码表示中,0的补码是唯一的,都为00000000(而在原码、反码表示中,+0和-0的表示是不相同的),而且,可以用11111111表示-1的补码(这也是补码与原码和反码的区别之一)。
按位取反运算符~
~是一元运算符,对数据的每个二进制位取反,即把1变为0,把0变为1.
例如:
0010101 = ~1101010
按位与运算符&
参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0。即:0&0=0,0&1=0,1&0=0,1&1=1。
例如:
00101010&00010111=00000010
与运算的作用如下:
1、按位与可以用来对某些特定的位清零,如对数11010110第2位和第5位清零,可让该数与11101101进行按位与运算:
11010110&11101101=11000100
2、按位与可以用来取某个数中某些指定的位,如要取数11010110的第2位和第5位,可让该数与00010010进行按位与运算:
11010110&00010010=00010010
按位或运算符|
参与运算的两个值,只要两个相应位中有一个为1,则该位的结果为1。即0|0=0,0|1=1,1|0=1,1|1=1。
例如:
00101010|00010111=00111111
按位或可以用来把某些特定的位置1,如对数11010110的第4位和第5位置为1,可以让该数与00011000进行按位或运算:
11010110|00011000=11011110
按位异或运算符^
参与运算的两个值,如果两个相应位相同,则结果为0,否则为1,即:0^0=0,0^1=1,1^0=1,1^1=0。
例如:
00101010^00010111=00111101
异或运算的作用如下:
1、 按位异或可以用来使某些特定的位翻转,如对数11010110的第4、5位翻转,可以将该数与00011000进行按位异或运算:
11010110^00011000=11001110
2、 通过按位异或运算,可以实现两个值的交换,而不使用临时变量,例如:交换两个整数a和b的值,可以通过下列语句实现:
a = 11010110,b = 01011001
a = a ^ b; //a=10001111
b = b ^ a; //b=11010110
a = a ^ b; //a=01011001
左移运算符<<
用来将一个数的各二进制位全部左移若干位,例如:a = a << 2,使a的各二进制位左移两位,右补0。若a = 00001111,则a<<2=00111100。高位左移后溢出,舍弃不起作用。在不产生溢出的情况下,左移一位相当于乘2,而且用左移来实现乘法比乘法运算速度要快。
右移运算符>>
用来将一个数的各二进制位全部右移若干位,例如:a = a>>2,使a的各二进制位右移两位,移到右端的低位被舍弃,最高位则移入原来高位的值。如a=00110111,则a>>2=00001101,b=11010011,则b>>2=11110100。
右移一位相当于除2取商,而且用右移实现除法比除法运算速度要快。
无符号右移运算符>>>
用来将一个数的各二进制位无符号右移若干位,与运算符>>相同,移出的低位被舍弃,但不同的是最高位补0。如a=00110111,则a>>>2=00001101,b=11010011,则b>>>2=00110100。
不同长度的数据进行位运算
如果两个数据长度不同(如byte型和int型),对它们进行位运算时,如a&b,a为byte型,b为int型,则系统首先会将a的左侧24位填满,若a为正,则填满0;若a为负,则左侧填满1.
java位运算符和位运算表达式相关推荐
- java int 运算符_Java 位运算符和 int 类型的实现
Java 位运算符和 int 类型的实现 其他运算符 # 算术运算符 +.-.*./.++i.i++.--i.i-- # 关系运算符 ==.!=.>.=.<= # 逻辑运算符 && ...
- 【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)
位运算符包括位逻辑运算符.位移运算符.最近做算法的时候经常用到,现在来总结下. 重点掌握的是 左移 << ,右移 >> . 1.位逻辑运算符 那么位逻辑运算符怎么计算的呢?先看 ...
- Java中的位运算符、移位运算
一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&) :两位全为1,结果为1,否则为0: (2)按位或 (|) :两位有一个为1,结果为1,否则为0: (3) ...
- C语言按位运算符 按位逻辑运算 移位运算 及其用法
目录 按位逻辑运算符 移位运算符 按位逻辑运算符 C语言提供了四种按位逻辑运算符 注:他们的操作数必须是整数. 1.按位取反(~) ~运算符把0变为1,把1变为0,如下例子所示: ~(0100 100 ...
- 位运算符和位运算(与,或,异或等)
一."按位与"运算符(&) 1.运算规则 参加运算的两个数据,按二进位进行"与"运算,如果两个相应的二进位都为1,则该位的结果值为1,否则为0,即: 0 ...
- python位运算用途_Python 位运算符与位运算
总结: 位运算符 是 直接对整数在内存中的二进制位进行操作: Python运算符优先级: 以下表格列出了从最高到最低优先级的所有运算符: 运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转 ...
- 菜鸟教程python位运算符_NumPy 位运算
NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...
- python位运算符_Python位运算符
操作符1 名称:& 描述:按位与运算符 示例: #!/usr/bin/python # -*- coding: UTF-8 -*- # 定义变量,通过赋值运算符赋值"=" ...
- java boolean 按位或_布尔运算符与按位运算符
布尔运算符与按位运算符 我对何时应该使用布尔运算符与按位运算符感到困惑 and vs &, or vs | 有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果? 8个解决方案 56 ...
最新文章
- Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
- 以软件开发生命周期来说明不同的测试的使用情况
- 【ABAP】Smartforms无法打印字符串中空格问题处理
- android进程 系统启动过程 android boot sequence
- jedis操作redis(二)
- 余弦信号频谱表达式_2019年清华828信号与系统试题回忆
- 如何给 SAP Fiori Elements 应用的字段添加 value help
- c语言素数程序出现大空行,C语言实现寻找大素数
- mongdb group聚合操作
- 数字表达_神奇的数字英语表达一定会让你大吃一惊
- [Usaco2005 Jan]Muddy Fields泥泞的牧场
- SQL LIKE 操作符
- 初识机器学习_04 朴素贝叶斯
- 计算机机房辐射大吗6,我的办公室离机房只有一墙之隔,请问对孕妇辐射大吗?我们单位10多个电脑的交换机。...
- Oracle--替代触发器(INSTEAD OF)
- Minimax AI 算法在井字游戏(或 Noughts and Crosses)游戏中的实现
- 统计思维(实例5)——变量之间的关系
- 温度报警器c语言课程设计,综合电子设计课程设计实验报告-可调温度报警器.doc...
- 跨考计算机日程记录01
- SaaS软件真的需要客户运营吗?