首页 > 其他 > 详细

位运算符

时间:2019-08-05 19:16:11      阅读:108      评论:0      收藏:0      [点我收藏+]

技术分享图片

 

1 ~ 按位取反,指的是按照补码进行取反

正数取反

~8(对8进行取反操作):先将8转为2进制

原码:00001000

反码:00001000

补码:00001000

对补码进行取反操作:

11110111

转为原码,符号位不变补码先减1再取反:

11110110

10001001 -> 十进制的-9

 

负数取反

~ -2

 

2 & 按位与,针对二进制,只要有一个为0,结果为0

8 ----> 1000

7 ----> 0111

8 & 7 ----> 0000 ,结果为0

 

3 | 按位或,针对二进制,只要有一个为1,结果就为1

8 ----> 1000

7 ----> 0111

8 | 7 ----> 1111 ,结果为15

 

4 ^ 按位异或,针对二进制,相同的为0,不同的为1

8 ----> 1000

7 ----> 0111

8 | 7 ----> 1111 ,结果为15

 

5 << 向左移位,转换成二进制后向左移动2位,后面用0补齐

8 << 2 相等于乘以2的二次方,结果为32

 

6 >> 向右移位,转换成二进制后向右移动2位

8 >> 2 相等于除以2的二次方,结果为2

1000 -> 0010

负数右移,高位补一

-2 >> 1 = -1

1010 ->

1101(反码) ->

1110(补码) ->

1110 >>1 = 1111(补码右移1位)

1111反码为1110

1110 的原码为 1001

1001 表示-1

 

7 >>> 无符号右移,忽略符号位,空位都以0补齐

10 进制转2进制的时候,因为2进制数一般分8位、 16位、32位以及64位 表示一个10进制数,所以在转换过程中,最高位会补零。

在计算机中负数采用2进制的补码表示,10进制转为2进制得到的是原码,将原码按位取反得到的是反码,反码加1得到补码。

2进制的最高位是符号位,0表示正,1表示负。

>>>>> 唯一的不同是它无论原来的最左边是什么数,统统都用0填充。
比如,byte是8位的,-1表示为byte型是11111111(补码表示法)
b>>>4就是无符号右移4位,即00001111,这样结果就是15。

 

位运算符

原文:https://www.cnblogs.com/Latiny/p/11304830.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!