首页 > 代码库 > 位运算

位运算

===========================================

******反码和取反不同(区别:反码符号位不变,取反符号位也变)******

===========================================

【~-5=4】

-5原码:10000000 00000000 00000000 00000101

-5反码:11111111 11111111 11111111 11111010

-5补码(=反码+1):11111111 11111111 11111111 11111011

-5补码取反:00000000 00000000 00000000 00000100 (得到结果为补码)

因为正数补码=反码=原码,所以原码也是:00000000 00000000 00000000 00000100 

*注*:负数反码为符号位不变,其他位取反;

  负数补码=反码+1;

【-3^3=-2】

-3原码:10000000 00000000 00000000 00000011

-3反码:11111111 11111111 11111111 11111100

-3补码:11111111 11111111 11111111 11111101

3补码:00000000 00000000 00000000 00000011

------------------【(-3^3)补码异或】--------------------

异或(补码):11111111 11111111 11111111 11111110

异或(反码=补码-1):11111111 11111111 11111111 1111101

异或(原码):10000000 00000000 00000000 00000010

 

【移位运算:都必须先求出补码再移位运算(在计算机运算中,都是以补码的方式运算的),溢出用符号位补全,符号位为0,补0;符号位为1,补1】

1>>2 == 0;

-1>>2 == -1;

位运算