C++ 位操作
整数的二进制表示
原码、反码、补码
原码:
一个正数的原码,是按照绝对值大小转换成的二进制数;
一个负数的原码,是按照绝对值大小转换成的二进制数,然后最高位补1。
比如:
00000000 00000000 00000000 00000101
是 5的 原码。
10000000 00000000 00000000 00000101
是 -5的 原码
反码:
正数的反码就是源码
负数10000000 00000000 00000000 00000101
每一位取反(除符号位),得11111111 11111111 11111111 11111010
补码:
正数的补码就是源码
负数的补码就是反码加1
自己的理解:要知道正数在计算机中表示的就是它的源码,负数在计算机里是用补码来表示,该加法器操作就操作
参考:
负数的二进制表示
位操作
掌握基本的操作
与: &
或: |
异或: ^
取反: ~
左移: <<
右移: >>
掌握常用位操作小技巧:
判断奇偶
交换两数
变换符号
求绝对值