Java右移运算符>>和>>>

java提供两种右移运算符,属于位运算符。位运算符用来对二进制位进行操作。

>>  :算术右移运算符,也称带符号右移。用最高位填充移位后左侧的空位。

>>>:逻辑右移运算符,也称无符号右移。只对位进行操作,用0填充左侧的空位。

表达式为:

r = e1 >> e2;

r = e1 >>> e2;

表示把数e1向右移动e2位。

运算规则:

>>  :按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补符号位,即正数补零,负数补1。符号位不变。

>>>:按二进制形式把所有的数字向右移动对应位数,低位移出(舍弃),高位的空位补零。对于正数来说和带符号右移相同,对于负数来说不同。

按上一篇,-1在32位二进制中表示为:

11111111 11111111 11111111 11111111

-1>>1:按位右移,符号位不变,仍旧得到
11111111 11111111 11111111 11111111

因此值仍为-1

而-1>>>1的结果为  01111111 11111111 11111111 11111111

原文地址:https://www.cnblogs.com/mithrandirw/p/8670859.html

时间: 2024-08-27 22:13:47

Java右移运算符>>和>>>的相关文章

java移位运算符:<<(左移)、>>(带符号右移)和>>>(无符号右移)。

1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零. 当左移的运算数是int 类型时,每移动1位它的第31位就

java移位运算符实验程序:&lt;&lt;(左移)、&gt;&gt;(带符 号右移)和&gt;&gt;&gt;(无符号右移)

public class txs { static void leftbit(){ int i;               //整型长度为32位                                                                                          //位 int num=0xFFFFFFE;  //1111 1111 1111 1111 1111 1111 1110      //28 for(i=0;i<28;i++

java移位运算符详解[转]

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数. 1)它的通用格式如下所示: value << num num 指定要移位值value 移动的位数. 左移的规则只记住一点:丢弃最高位,0补最低位 如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则 按

java移位运算符详解

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移).1.左移运算符左移运算符<<使指定值的所有位都左移规定的次数.1)它的通用格式如下所示:value << numnum 指定要移位值value 移动的位数.左移的规则只记住一点:丢弃最高位,0补最低位如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算规则按二进制形式把所有的

JAVA移位运算符

java中有三种移位运算符(二进制) <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >> 1,相当于num除以2 >>>    :     无符号右移,忽略符号位,空位都以0补齐

java位移运算符&lt;&lt;、&gt;&gt;、&gt;&gt;&gt;

java移位运算符不外乎就这三种:<<(左移).>>(带符号右移)和>>>(无符号右移). 1. 左移运算符 左移运算符<<使指定值的所有位都左移规定的次数.1)它的通用格式如下所示:value << numnum 指定要移位值value 移动的位数.左移的规则只记住一点:丢弃最高位(符号位同样丢弃),0补最低位如果移动的位数超过了该类型的最大位数,那么编译器会对移动的位数取模.如对int型移动33位,实际上只移动了332=1位. 2)运算

Java 位移运算符

一.Java中有三种位移符号 <<:左位移,相当于num*2: >>:右位移,相当于num/2: >>>:无符号右位移,忽略符号位,空位都以0补齐: 二.无符号右移,忽略符号位,空位都以0补齐 value >>> num     --   num 指定要移位值value 移动的位数. 无符号右移的规则只记住一点:忽略了符号位扩展,0补最高位  无符号右移运算符>>> 只是对32位和64位的值有意义 三.负数 Java中的负数使用

【java提高】(17)---Java 位运算符

Java 位运算符 &.|.^.~.<<.>> 以前学过有关java的运算符,不过开发了这么久也很少用过这个.现在由于开发需要,所以现在再来回顾整理下有关java的运算符. 主要运算符有以下:与(&).或(|).异或(^).取反(~).左移(<<).右移(>>). 一 与(&) 和 (|) 1.&(按位与) 规则:将两边的数转换为二进制位,然后运算最终值.运算规则即(两个为真才为真)1&1=1 , 1&0=0

Java位运算符详解

# 前言 之前了解过位运算符,左移`>`等于除以2.但是我在看jdk源码的时候发现了一个`>>>`三个符号的,不明白这是什么意思,就去搜了一下,发现还挺多的知识点的,就整理了一下. 首先我们知道,我们编写的程序最终都是在计算机底层进行的,计算机底层也仅支持0.1两种符号.所以当时网上有个键盘只有0.1两个键,那才是大佬用的键盘.扯远了... 先来复习一下java的基本类型都占多少字节,占多少位(1字节等于8位): | 类型 | 字节数 | 位数 | 大小范围 | | -------