1 solutions
-
1
a=10(1010) b=9(1001) a&b a和b转成二进制以后,对应位都是1才是1 1010 1001 1000 a&b=8 a|b a和b转成二进制以后,对应位只要有一位是1就是1 1010 1001 1011 a|b=11 a^b a和b转成二进制以后,对应位只要不相同即是1 1010 1001 0011 a^b=3 for(int i=30;i>=0;i--) //对int类型的非符号位从高位到低位进行枚举 { if(x>>i&1) //x的二进制的第i位是1 { // } } //枚举n个人的不同选择 for(int i=0;i<1<<n;i++) //枚举每种选择 { for(int j=n-1;j>=0;j--) //第i种选择的第j个人的状态 { if(i>>j&1) //第i种选择第j个人选了 { // } else //第i种选择第j个人没有选 { // } } } x>>i;//x右移i位,等价于x*(2^i) x<<i;//x左移i位,等价于x/(2^i) bitset<32> a(n); //得到n转成32位补码的内容,可以使用a[i]访问第i位 a.count(); //统计a中的1的个数 %d(10进制) %o(8进制),%x(16进制) scanf("%d",&x); //得到10进制的数x printf("%d",x); //输出10进制的数x 10进制转x进制 while(x) { s=s+char(x%n+'0');//如果x%10大于等于10,则需要转成对应的字母 x/=n; } reverse(s.begin(),s.end()); //s是n转成x进制的结果 x进制转成10进制 int sum=0; reverse(s.begin(),s.end()); int n=s.size(); for(int i=0;i<n;i++) { sum=sum+(s[i]-'0')*pow(x,i); //当s[i]-'0' 大于等于10的时候,需要转成对应的数字 } //sum是x进制的s转成10进制的结果
Information
- ID
- 2851
- Time
- 1000ms
- Memory
- 64MiB
- Difficulty
- 1
- Tags
- # Submissions
- 6
- Accepted
- 4
- Uploaded By