Java中的位运算与移位运算有哪些
导读:本文共2134.5字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: 位运算按位“与” &规则: 如果两个相应的二进制形式的对应的位数都为 1,则结果为 1;否则为 0;4 & 540000 010050000 0101按位与运算&4 & 5 = 40000 01001 * 2^2 = 4-4 & 5-41111 110050000 0101按位与运算&规则:运算结果符号位是1,为负... ...
目录
(为您整理了一些要点),点击可以直达。- (2):4
- (3):0000 0100
- (4):5
- (5):0000 0101
- (7):&
- (9):0000 0100
- (10):1 * 2^2 = 4
- (11):-4 & 5
- (12):-4
- (13):1111 1100
- (14):5
- (15):0000 0101
- (17):&
- (19):-4 & 5 = 4
- (20):0000 0100
- (21):1 * 2^2 = -4
- (22):1.正数直接取二进制运算
- (26):4
- (27):0000 0100
- (28):5
- (29):0000 0101
- (33):0000 0101
- (34):1 * 2^0 + 1 * 2^2 = 5
- (35):-4 | 5
- (36):-4
- (37):1111 1100
- (38):5
- (39):0000 0101
- (43):-4 | 5 =
- (44):1111 1101
- (46):1111 1100
- (48):-0000 0011
- (49):-4 | 5 = -3
- (50):1 * 2^0 + 1 * 2^1 = -3
- (53):4
- (54):0000 0100
- (55):5
- (56):0000 0101
- (60):0000 0001
- (61):1 * 2^0 = 1
- (62):-4 ^ 5
- (63):-4
- (64):1111 1100
- (65):5
- (66):0000 0101
- (70):-4 ^ 5 =
- (71):1111 1001
- (73):1111 1000
- (75):-0000 0111
- (76):-4 ^ 5 = -7
- (77):1 * 2^0 + 1 * 2^1 + 1 * 2^2
- (80):8
- (81):0000 1000
- (82):<< 2
- (83):0010 0000
- (85):<<
- (88):1 * 2^5 = 32
- (89):-8 << 2
- (90):-8
- (91):1111 1000
- (92):<< 2
- (93):1110 0000
- (95):<<
- (98):1101 1111
- (100):-0010 0000
- (101):-8 << 2 = -32
- (102):1 * 2^5 = -32
- (105):8
- (106):0000 1000
- (107):>> 2
- (108):0000 0010
- (110):>>
- (113):1 * 2^1 = 2
- (114):-8 >> 2
- (115):-8
- (116):1111 1000
- (117):>> 2
- (118):1111 1110
- (120):>>
- (123):1111 1101
- (125):-0000 0010
- (126):-8 >> 2 = -2
- (127):1 * 2^1 = -2
- (130):8
- (131):0000 1000
- (132):>> 2
- (133):0000 0010
- (135):>>>
- (138):1 * 2^1 = 2
- (139):-8 >>> 2
- (140):-8
- (141):1111 1111 1111 1111 1111 11
- (142):>>> 2
- (143):0011 1111 1111 1111 1111 11
- (145):>>>
- (148):-
- (150):-
- (151):-8 >>> 2 = 1073741
规则: 如果两个相应的二进制形式的对应的位数都为 1,则结果为 1;否则为 0;
4 & 5
4
0000 0100
5
0000 0101
按位与运算
&
4 & 5 = 4
0000 0100
1 * 2^2 = 4
-4 & 5
-4
1111 1100
5
0000 0101
按位与运算
&
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
-4 & 5 = 4
0000 0100
1 * 2^2 = -4
1.正数直接取二进制运算
2.负数取反加一得补码再运算,得到的结果符号位为 0,不需要做任何操作直接给出结果
规则: 有 1 为 1;否则为 0;
4 | 5
4
0000 0100
5
0000 0101
按位或运算
|
4 | 5 = 5
0000 0101
1 * 2^0 + 1 * 2^2 = 5
-4 | 5
-4
1111 1100
5
0000 0101
按位或运算
|
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
-4 | 5 =
1111 1101
减1
1111 1100
取反
-0000 0011
-4 | 5 = -3
1 * 2^0 + 1 * 2^1 = -3
规则: 相同为 0;不同为 1;
4 ^ 5
4
0000 0100
5
0000 0101
按位异或运算
^
4 ^ 5 = 1
0000 0001
1 * 2^0 = 1
-4 ^ 5
-4
1111 1100
5
0000 0101
按位异或运算
^
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
-4 ^ 5 =
1111 1001
减1
1111 1000
取反
-0000 0111
-4 ^ 5 = -7
1 * 2^0 + 1 * 2^1 + 1 * 2^2 = -7
规则: 右边空出的位用 0 填补高位,左移溢出则舍弃该高位。
8 << 2
8
0000 1000
<< 2
0010 0000
左移运算符
<<
结果
8 << 2 = 32
1 * 2^5 = 32
-8 << 2
-8
1111 1000
<< 2
1110 0000
左移运算
<<
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
减1
1101 1111
取反
-0010 0000
-8 << 2 = -32
1 * 2^5 = -32
规则: 左边空出的位正数用 0 负数 1 填补,右移溢出则舍弃该低位。
8 >> 2
8
0000 1000
>> 2
0000 0010
左移运算符
>>
结果
8 >> 2 = 2
1 * 2^1 = 2
-8 >> 2
-8
1111 1000
>> 2
1111 1110
左移运算
>>
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
减1
1111 1101
取反
-0000 0010
-8 >> 2 = -2
1 * 2^1 = -2
规则: 正数与右移规则一样;负数无符号右移,在高位补 0
8 >>> 2
8
0000 1000
>> 2
0000 0010
无符号右移运算符
>>>
结果
8 >>> 2 = 2
1 * 2^1 = 2
-8 >>> 2
-8
1111 1111 1111 1111 1111 1111 1111 1000
>>> 2
0011 1111 1111 1111 1111 1111 1111 1110
无符号右移运算符
>>>
规则:运算结果符号位是1,为负数, 需要减 1,再取反(其他运算也要遵循)
减1
-
取反
-
-8 >>> 2 = 1073741822
1073741822
Java中的位运算与移位运算有哪些的详细内容,希望对您有所帮助,信息来源于网络。