在JAVA中,位运算符到底是啥概念!

为什么
int a=-2,b;
b=a>>>30;
得出的结果为什么b=3?

int a=-2,b;
b=a>>30;
得出的结果为什么b=-1
新人求助

>> 右移,高位补符号位,被移出的丢弃;
>>> 无符号右移,高位补0,被移出的丢弃;
<< 左移,没有无符号的;
a=-2,a是int,java中int是4个字节,即a=11111111111111111111111111111110B;
其中最高位是符号位,负数是1,正数是0;

a>>>30后的结果赋给b,b=00000000000000000000000000011B, 即3;

a>>30后的结果赋给b,b=11111111111111111111111111111111B, 即-1;
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-30
                int a1 = -2, b1;
b1 = a1 >>> 30;
// -2 : 原码:1111 1111 1111 1111 1111 1111 1111 0010
//       反码:1111 1111 1111 1111 1111 1111 1111 1101
//       补码:1111 1111 1111 1111 1111 1111 1111 1110
// 无符号右移动30位,左边0补充
//              0000 0000 0000 0000 0000 0000 0000 0011
// 最后就是+3


int a2 = -2, b2;
b2 = a2 >> 30;
// -2:  原码:1111 1111 1111 1111 1111 1111 1111 0010
//       反码:1111 1111 1111 1111 1111 1111 1111 1101
//       补码:1111 1111 1111 1111 1111 1111 1111 1110
// 带符号位右移30位,左边1补充
//              1111 1111 1111 1111 1111 1111 1111 1111
// 再找反码, (除去左边符号位,其余取反)
//              1111 1111 1111 1111 1111 1111 1111 0000
// 再找原码 (还是将反码末尾加1)
//              1111 1111 1111 1111 1111 1111 1111 0001
// 结果为-1
System.out.println (b2);

本回答被提问者采纳

JAVA位运算符
位操作符(bitwise operator) 位操作符允许我们操作一个基本数据类型中的整数型值的单个“比特(bit)”,即二进制位。位操作符会对两个参数对应的位执行布尔代数运算,并最终生成一个结果。 位操作符来源于 C 语言面向底层的操作,那时我们经常需要直接操纵硬件,设置硬件寄存器内的二进制位。Java的设计初衷是嵌入电视...

求:JAVA中常用位运算符及其用法详解
位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。位运算符共有7个,分别是:位与(&)、位或(|)、位非(~)、位异或(^)、右移(>>)、左移(<<)、0填充的右移(>>>)。位运算的位与(&)、位或(|)、位非(~)、位异或(^)与逻辑运算的相应操作的真值表...

JAVA位运算符
位运算符主要针对二进制,它包括了:“与”、“非”、“或”、“异或”。从表面上看似乎有点像逻辑运算符,但逻辑运算符是针对两个关系运算符来进行逻辑运算,而位运算符主要针对两个二进制数的位进行逻辑运算。下面详细介绍每个位运算符。1.与运算符 与运算符用符号“&”表示,其使用规律如下:两...

位运算符的简介
位运算符用来对二进制位进行操作,Java中提供了如下表所示的位运算符:位运算符中,除 ~ 以外,其余均为二元运算符。操作数只能为整型和字符型数据。3.4.1补码Java使用补码来表示二进制数,在补码表示中,最高位为符号位,正数的符号位为0,负数为1。补码的规定如下:对正数来说,最高位为0,其余各位代...

java:^ 的意思?
Java中的位运算符!用来做按位异或运算的。异或指的是相同位值相同异或结果为0,相同位异或值不同结果为1。例如:int i = 2^3;首先需要将数字转换成二进制数,然后进行运算。2的二进制数是10 3是11 10 11 ^ --- 01 所以,i中的结果是数字1。

java 这个符号^ 什么意思 应该是运算符吧
在java中是位运算符的一种 ^:位异或运算:两个数转为二进制,然后从高位开始比较,如果相同则为0,不相同则为1。位同或运算:两个数转为二进制,然后从高位开始比较,如果相同则为1,不相同则为0。java中并没有同或运算符,可以通过异或转换得到。同或运算 = 异或运算 ^ 1 ...

JAVA位运算怎么用的???
Java 位运算 Java 位运算[转]一,Java 位运算1.表示方法: 在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1。补码的表示需要满足如下要求。 (l)正数的最高位为0,其余各位代表数值本身(二进制数)。 (2)对于负数,通过对该数绝对值的补码按位取反,再对...

java位运算符详解
位运算 前面介绍的各种运算都是以字节作为最基本位进行的。 但在很多系统程序中常要求在位(bit)一级进行运算或处理。C语言提供了位运算的功能, 这使得C语言也能像汇编语言一样用来编写系统程序。一、位运算符C语言提供了六种位运算符:& 按位与 | 按位或 ^ 按位异或 ~ 取反 << 左移 >> 右...

java中(^)什么作用
java中(^)是位运算符, 按位异或运算 按位异或运算符“^”是双目运算符。其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算数以补码出现。例如 :9^5可写成算式如下: 00001001^00000101 00001100 (十进制为12)java代码中可能出现正则表达式,在正则...

JAVA里面的位运算符>>,<<,>>>是什么意思,请举个列子具体说明一下?_百 ...
java 中:>>带符号右移 (n>>2 将整型值带符号右移2位 )<<带符号左移 (n<<2 将整型值带符号左移2位 )>>>无符号右移 (n>>>2 将整型值无符号右移2位 ) 在32位系统中任何数左移(右移)32位还是它本身 例如:�6�1a=a<<2将a...

相似回答