位运算
位运算简介
数据在计算机内存中都是以二进制的形式储存的,位运算就是直接对整数在内存的二进制进行运算操作。(参与位运算的数只限整数)所以相对于其他部分运算符,他们的运算速度、更快节省时间,对于一些该死的卡时间的题目位运算可以缩短运算时间,万一就哇(WA)了呢在算法复杂度已经难以优化的时候可以试试。
数值补码表示方法
数值在计算机内存中以补码形式存储;
正数补码:与原码相同;
负数补码:符号位不变,其他按照原码取反,最后加1。
无符号整型
C++ unsigned short的范围是065535,有符号的情况下其范围是-3276832767当作无符号处理的时候,他们补码最高位的1不在表示负号,而是变成有效数字位。
位运算符
按位与 & 全一则一,否则为零
按位或 | 有一则一,否则为零
按位取反 ~ 是零则一,是一则零
按位异或 ^ 不同则一,相同则零
左位移 << a<<k等价于a*2^k
右位移 >> a>>k等价于a/2^k
按位与运算 &
格式:x&y,x and y
应用: