位运算相关知识
前言:计算机是用补码进行计算与存储
对于有符号数而言,二进制的最高位是符号位 ,0表示正数, 1表示负数;
正数的原码、反码、补码都一样;
负数的原码是其正数符号位为1,其他位和正数的二进制位相同;负数的反码等于负数原码符号位不变,其他位按位取反;负数的补码等于负数的反码+1;
go中的取反操作
^
,c、java、c++中取反操作~
;按位与
&
运算,两个全为1,结果为1,否则为0;按位或
|
运算,一个为1就为1;按位异或
^
运算,两个不同,结果为1 ,相同则为0;左移运算
<<
,符号位不变,低位补 0;右移运算
>>
,低位溢出,符号位不变,并用符号位补溢出的高位;go中位清除
&^
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Erebus's Blog!
评论