原码,反码,补码 与(&) 或(|) 非(~) 异或(^) 左移 << 右移 >> 无符号右移 >>>

原码

数字在计算机中以二进制表示,8位的字长,最高位是符号位, 正数为0,负数为1.比如,3为0000 0011; -3为1000 0011

注意,Java中int为32位。3的16进制表示为3,-3的16进制为fffffffd.

反码

正数的反码和原码相同。

负数的反码为符合位不变,其余按位取反。

3 为0000 0011; -3为1111 1100

补码

正数的补码和原码相同。

负数的补码为反码+1.

3 为0000 0011; -3为1111 1101

与(&)

按位与,位数对齐,全部为1的结果为1.

1&2 == 0                2&3 ==  2
0000 0001               0000 0010
0000 0010               0000 0011
---------               ---------
0000 0000               0000 0010

或(|)

按位或,位数对齐,只要有一个为1,则结果为1

1|2 == 3                2|3 ==  3
0000 0001               0000 0010
0000 0010               0000 0011
---------               ---------
0000 0011               0000 0011

非(~)

按位取反。

~1 == -2

0000 0001              
---------              
1111 1110              

我们直到负数的表示为反码+1. 所以,该结果中的反码为(1111 1110 - 0000 0001)=1111 1101,则绝对值原码为0000 0010, 即2。即结果为-2.

异或(^)

相同为假,不同为真。

1^2 == 3                2^3 ==  1
0000 0001               0000 0010
0000 0010               0000 0011
---------               ---------
0000 0011               0000 0001

左移 <<

所有的位左移,低位即右侧补0.

1<<2 == 4               3<<3 == 24
0000 0001               0000 0011
0000 0100               0001 1000

左移几位则相当于10进制乘以2的多少次方。所以1<<2==1*2*2==4; 3<<<3==3*2*2*2==24

右移 >>

正数右移,高位用0补,负数右移,高位用1补.

1>>2 == 0            13>>2 ==3           -3>>2 == -1     
0000 0001            0000 1101           1111 1101
---------            ---------           ---------
0000 0000            0001 0011           1111 1111

无符号右移 >>>

正数无符号右移同右移,负数无符号右移则高位补0.

1>>>2 == 0            13>>>2 ==3           -3>>>2 == 1073741823
0000 0001            0000 1101           fffffffd
---------            ---------           ---------
0000 0000            0001 0011           3fffffff

衍生运算符

由位运算操作符衍生而来的有:

&= 按位与赋值

|=  按位或赋值

^= 按位非赋值

>>= 右移赋值

>>>= 无符号右移赋值

<<= 赋值左移

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端儿

Web 前端颜色值--字体--使用,整理整理

颜色值 CSS 颜色使用组合了红绿蓝颜色值 (RGB) 的十六进制 (hex) 表示法进行定义。对光源进行设置的最低值可以是 0(十六进制 00)。最高值是 2...

2282
来自专栏老码农专栏

一些流行Java MVC框架的调用栈

1203
来自专栏我和未来有约会

简练的视图模型 ViewModel

patterns & practices Developer Center 发布了 Unity Application Block 1.2 for Silver...

2169
来自专栏Ryan Miao

ehcache报错

jfinal2.0+tomcat7+ehcache2.6.11+Linux Linux version 2.6.18-164.el5 (mockbuild@x8...

3729
来自专栏码匠的流水账

聊聊HystrixThreadPool

hystrix-core-1.5.12-sources.jar!/com/netflix/hystrix/HystrixThreadPool.java

771
来自专栏专知

2018年SCI期刊最新影响因子排行,最高244,人工智能TPAMI9.455

2018年6月26日,最新的SCI影响因子正式发布,涵盖1万2千篇期刊。CA-Cancer J Clin 依然拔得头筹,其影响因子今年再创新高,达244.585...

1282
来自专栏Petrichor的专栏

Dataset 列表:机器学习研究

In computer vision, face images have been used extensively to develop face recog...

1501
来自专栏linux驱动个人学习

高通msm8909耳机调试

1、DTS相应修改: DTS相关代码:kernel/arch/arm/boot/dts/qcom/msm8909-qrd-skuc.dtsi: 1 s...

7475
来自专栏增长技术

App Guide相关

##TourGuide https://github.com/worker8/TourGuide

702
来自专栏一个会写诗的程序员的博客

java.base.jmod

/Library/Java/JavaVirtualMachines/jdk-9.jdk/Contents/Home/jmods$ jmod list java....

1112

扫码关注云+社区