相信很多人学习了很长时间的计算机,但是对于二进制还是不熟悉,每次遇见二进制 的题目心里总是有点胆怯,这篇文章就是带着大家一起来看看计算机里面的二进制到底谁怎么一回事
首先要明确一点,在程序设计重尽可能的使用二进制,肯定是可以带来更好更高的效率的,因为计算机本身就是按照二进制来进行的
本着能自己不写就不写的态度:先来介绍stl大法
bitset :实现了整数、字符串到二进制的转换 其中的二进制用数组的形式来存储
cout << endl << b.test(2); //测试下标为2处是否⼆进制位为1
cout << endl << b.count(); //b中1的⼆进制位的个数
首先是几个常见的运算
或 有一个1就是1 常用来让某一位变成1
与 都是1才可以 判单奇偶
异或 不同就是1 异或两次 还是原先的值
可以用来消除 然后找不同
非 取反
关于取模
(a + b) % p = (a % p + b % p) % p
(a - b) % p = (a % p - b % p) % p
(a * b) % p = (a % p * b % p) % p
a ^ b % p = ((a % p)^b) % p
左移 右移
右移:在高位补充上零,所以说是除以2的几次方
左移:在低位补充上零,所以说是乘以2的几次方
如何统计二进制数字中1的个数
int count(int x){
int sum = 0;
while(x){
if(x & 1) sum ++;
x >>= 1;
}
return sum;
}
还可以使用lowbit函数来计算