java位运算符和位运算表达式

> 右移 x>>a X各比特位右移a位 << 左移 X< >> 不带符号的右移 x>>>a X各比特位右移a位,左边的空位填零 注:位运算符中,除~以外,其余均为二元运算符,操作数只能为整型和字符型数..." itemprop="description">

位运算符是以二进制为单位对操作数进行的操作和运算,位运算的操作数和结果都是整型变量。

运算符 运算 例子 解释
~ 位反 ~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位运算符和位运算表达式相关推荐

  1. java int 运算符_Java 位运算符和 int 类型的实现

    Java 位运算符和 int 类型的实现 其他运算符 # 算术运算符 +.-.*./.++i.i++.--i.i-- # 关系运算符 ==.!=.>.=.<= # 逻辑运算符 && ...

  2. 【详解】位运算符:位逻辑运算符,位移运算符(<<左移,>>右移)

    位运算符包括位逻辑运算符.位移运算符.最近做算法的时候经常用到,现在来总结下. 重点掌握的是 左移 << ,右移 >> . 1.位逻辑运算符 那么位逻辑运算符怎么计算的呢?先看 ...

  3. Java中的位运算符、移位运算

    一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&)  :两位全为1,结果为1,否则为0: (2)按位或  (|)   :两位有一个为1,结果为1,否则为0: (3) ...

  4. C语言按位运算符 按位逻辑运算 移位运算 及其用法

    目录 按位逻辑运算符 移位运算符 按位逻辑运算符 C语言提供了四种按位逻辑运算符 注:他们的操作数必须是整数. 1.按位取反(~) ~运算符把0变为1,把1变为0,如下例子所示: ~(0100 100 ...

  5. 位运算符和位运算(与,或,异或等)

    一."按位与"运算符(&) 1.运算规则 参加运算的两个数据,按二进位进行"与"运算,如果两个相应的二进位都为1,则该位的结果值为1,否则为0,即: 0 ...

  6. python位运算用途_Python 位运算符与位运算

    总结: 位运算符 是 直接对整数在内存中的二进制位进行操作: Python运算符优先级: 以下表格列出了从最高到最低优先级的所有运算符: 运算符 描述 ** 指数 (最高优先级) ~ + - 按位翻转 ...

  7. 菜鸟教程python位运算符_NumPy 位运算

    NumPy 位运算 NumPy "bitwise_" 开头的函数是位运算函数. NumPy 位运算包括以下几个函数: 函数 描述 bitwise_and 对数组元素执行位与操作 b ...

  8. python位运算符_Python位运算符

    操作符1 名称:& 描述:按位与运算符 示例: #!/usr/bin/python # -*- coding: UTF-8 -*- # 定义变量,通过赋值运算符赋值"=" ...

  9. java boolean 按位或_布尔运算符与按位运算符

    布尔运算符与按位运算符 我对何时应该使用布尔运算符与按位运算符感到困惑 and vs &, or vs | 有人能启发我何时使用每种药物,何时使用一种药物会影响我的结果? 8个解决方案 56 ...

最新文章

  1. Android 使用Toolbar+DrawerLayout快速实现仿“知乎APP”侧滑导航效果
  2. 以软件开发生命周期来说明不同的测试的使用情况
  3. 【ABAP】Smartforms无法打印字符串中空格问题处理
  4. android进程 系统启动过程 android boot sequence
  5. jedis操作redis(二)
  6. 余弦信号频谱表达式_2019年清华828信号与系统试题回忆
  7. 如何给 SAP Fiori Elements 应用的字段添加 value help
  8. c语言素数程序出现大空行,C语言实现寻找大素数
  9. mongdb group聚合操作
  10. 数字表达_神奇的数字英语表达一定会让你大吃一惊
  11. [Usaco2005 Jan]Muddy Fields泥泞的牧场
  12. SQL LIKE 操作符
  13. 初识机器学习_04 朴素贝叶斯
  14. 计算机机房辐射大吗6,我的办公室离机房只有一墙之隔,请问对孕妇辐射大吗?我们单位10多个电脑的交换机。...
  15. Oracle--替代触发器(INSTEAD OF)
  16. Minimax AI 算法在井字游戏(或 Noughts and Crosses)游戏中的实现
  17. 统计思维(实例5)——变量之间的关系
  18. 温度报警器c语言课程设计,综合电子设计课程设计实验报告-可调温度报警器.doc...
  19. 跨考计算机日程记录01
  20. SaaS软件真的需要客户运营吗?

热门文章

  1. varnish 4.0 官方文档翻译9-用户手册- 向Vanish下发指令
  2. 37游戏叫板外国进口 用设计抢滩市场才是硬道理
  3. 猿创征文|OpenCV 如何提高条形码识别率
  4. 硬件接口之网口介绍与布线(包括以太网协议)
  5. 蓝代斯克和玖道在华设立合资企业
  6. (PTA)6-9 字符串压缩
  7. 航空客运订票系统(C语言,软件用的DEV)
  8. iopl和outb函数
  9. [Unity]实现按住WASD角色移动
  10. 前端JavaScript基础学习