首页 > 编程语言 >Java01 位运算符和位移运算符

Java01 位运算符和位移运算符

时间:2022-10-12 22:46:46浏览次数:72  
标签:10 操作数 Java01 一位 运算符 左侧 位移

位运算符和位移运算符是底层运算符,处理组成整数的单个位。位运算符和位移运算符操作数不能是浮点数、布尔值、数组或对象。如果操作数是布尔值,&、| 和 ^ 运算符执行的是逻辑运算。
如果位运算符的操作数中有一个是 long 类型,结果就是 long 类型。除此之外,结果都是 int 类型。如果位移运算符左边的操作数是 long 类型,结果为 long 类型;否则,结果是 int 类型。位运算符和位移运算符如下。

按位补码(~)

一元运算符 ~ 是按位补码运算符,或叫位非运算符。它把单个操作数的每一位反相,1 变成 0,0 变成 1。

byte b = ~12;            // ~00001100 ==> 11110011或十进制数-13

位与(&)

这个运算符在两个整数操作数的每一位上执行逻辑与运算,合并这两个操作数。只有两个操作数的同一位都为 1 时,结果中对应的位才是 1。

10 & 7                   // 00001010 & 00000111 ==> 00000010或2

位或(|)

这个运算符在两个整数操作数的每一位上执行逻辑或运算,合并这两个操作数。如果两个操作数的同一位中有一个或两个都是 1,结果中对应的位是 1;如果两个操作数的同一位都是 0,结果中对应的位是 0。

10 | 7                   // 00001010 | 00000111 ==> 00001111或15

位异或(^)

这个运算符在两个整数操作数的每一位上执行逻辑异或运算,合并这两个操作数。如果两个操作数的同一位值不同,结果中对应的位是 1;如果两个操作数的同一位都是 1 或 都是 0,结果中对应的位是 0。

10 ^ 7    // 00001010 ^ 00000111 ==> 00001101或13

左移(<<)

<< 运算符把左侧操作数的每一位向左移动右侧操作数指定的位数。左侧操作数的高位被丢掉,右边缺少的位补零。整数向左移 n 位,相当于乘于 2n。

10 << 1    // 00001010 << 1 = 00010100 = 20 = 10*2
7 << 3     // 00000111 << 3 = 00111000 = 56 = 7*8
-1 << 2    // 0xFFFFFFFF << 2 = 0xFFFFFFFC = -4 = -1*4

带符号右移(>>)

>> 运算符把左侧操作数的每一位向右移动右侧操作数指定的位数。左侧操作符的低位被移除,移入的高位和原来的最高位一样。也就是说,如果左侧操作数是正数,移入的高位是 0;如果左侧操作数是负数,移入的高位是 1。这种技术叫高位补符号,作用是保留左侧操作数的符号。如果左侧操作数是正数,右侧操作数是 n,>> 运算符的计算结果相当于整数除以 2n。

10 >> 1     // 00001010 >> 1 = 00000101 = 5 = 10/2
27 >> 3     // 00011011 >> 3 = 00000011 = 3 = 27/8
-50 >> 2    // 11001110 >> 2 = 11110011 = -13 != -50/4

不带符号右移(>>>)

这个运算符和 >> 类似,但是不管左侧操作数的符号是什么,高位总是移入 0。这种技术叫高位补零。左侧操作数是无符号的数字时才适用这个运算符(可是 Java 的整数类型都带符号)。

0xff >>> 4     // 11111111 >>> 4 = 00001111 = 15 = 255/16
-50 >>> 2      // 0xFFFFFFCE >>> 2 = 0x3FFFFFF3 = 1073741811

标签:10,操作数,Java01,一位,运算符,左侧,位移
From: https://www.cnblogs.com/zhuanghamiao/p/Java-01.html

相关文章

  • 33.关系运算符重载
    程序1:#pragmawarning(disable:4996)//2022年10月12日21:26:43#include<iostream>usingnamespacestd;classMaker{public:Maker(){id=0;......
  • 32.赋值运算符重载
    1.赋值(=)运算符重载赋值符常常初学者的混淆。这是毫无疑问的,因为’=’在编程中是最基本的运算符,可以进行赋值操作,也能引起拷贝构造函数的调用。classPerson{ frie......
  • 实验1c语言开发环境使用和数据类型,运算符和表达式
    1.试验任务1(1)在垂直方向上打印两个字符小人的源代码,以及运行结果截图 \\在垂直方向上打印两个字符小人#include<stdio.h>intmain(){printf("o\n");pr......
  • 【C语言】赋值操作符、单目操作符、自增自减运算符。
    ......
  • 第二章 运算符
    第二章运算符计算运算符操作符1.1运算符分类运算符(operator)也被称为操作符,是用于实现赋值、比较和执行算数运算等功能的符号。算数运算符递增和递减运算符比较运......
  • 位运算符
    最近用的很多,快快熟悉。===1.and运算===and运算通常用于二进制取​​位操作​​​,例如一个数and1的结果就是取​​​二进制​​​的最末位。这可以用来判断一......
  • Java学习之路:运算符
    2022-10-1010:34:08......
  • Java运算符
    Java运算符逻辑运算符与&&,或||,非!逻辑与运算:两个结果都为真,结果才为true,如果前面代码判断为错,后面则不执行。逻辑或运算:两个变量有一个为真,则结果才为true。逻辑......
  • 优先级排序为:算术运算符 > 关系运算符 > 赋值运算。
    优先级排序为:算术运算符>关系运算符>赋值运算。算术运算符中,-负数(如–1)、%百分比、^乘方、*和/(乘和除)、+和–(加和减)属于优先级第三级,加法运算符【+】、减法......
  • 多层三目运算符
    参考:https://blog.csdn.net/qq_36138652/article/details/115789463......