1 solutions

  • 1
    @ 2025-8-20 15:44:57
    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