大家好,我是你的好朋友思创斯。今天说一说7位运算符简单讲解视频_按位取反运算符,希望您对编程的造诣更进一步.
符号
& :按位与
| :按位或
~ :按位非
^ :按位异或
<< :左位移运算符
>>:右位移运算符
>>>:无符号右移运算符
例子
- 5 & 9 5 | 9
00000101 00000101
& 00001001 | 00001001
—————— ——————
00000001 00001101
5 & 9 的结果是1 5 | 9 的结果是13
-
2.原码是负数 负数-》补码-》取反 按位非值
-
-5
-5 的二进制 10000101
取反 11111010
1 即补码 1111011
补码取反 0000100 这是内存中的保存形式
即 4
所以 ~-5=4
原码是正数 取反 取反以后是负数 =》求补码 非值(负数补码的补码是原码)
~5
5的二进制是00000101
按位取反 11111010 这是内存中的保存形式,(在内存中,数值都是以二进制补码形式保存)
取反 10000101
1 即补码 10000110
即 -6
3.5^9 =13
00000101
^ 00001001
——————
00001100
4.左移 将一个运算对象的各二进制位全部左移若干位(左边的二进制丢弃,右边补0)
正数左移
11<<2 =44
11: 00001011 左移两位 即 00101100 即44
负数左移
-14<<2=-56
-14 的补码(内存中存的是补码) 11110010 左移 两位 11001000 即 -56
5.右移 >> 将一个运算对象的各二进制位全部右移若干位,正数左补0,负数左补1.
4 >> 2 = 1; 0000 0100 =>0000 0001
-14 >> 2 = -4; 1111 0010(-14的补码) =》1111 1100
1111 1100的补码是1000100 即-4
6.无符号右移>>>
正数无符号右移高位补0 (对正数进行若干次无符号右移,得到的永远都是正数或0)
负数无符号右移 高位补0(java中是32位)
11111111 11111111 11111111 11110000 (-16的补码)右移两位高位补零:00111111 11111111 11111111 11111100 –这个二进制对应的值就是1073741820
在java语言中,为了保证移动位数的有效性,以使右移位数不超过32位,采用了取余的操作,即
a >>n 等价于 a >> (n2)
文章由思创斯整理,转载请注明出处:https://ispacesoft.com/163601.html