问题标题: 酷町堂:快来人!!!!!!!!!!!!

0
0
已解决
汪宇航
汪宇航
新手启示者
新手启示者

6748   数字的位运算

经验值:1600 时间限制:1000毫秒

题目描述 Description

一个正整数a,将其转为为对应的二进制,然后将这个二进制取反,输出取反后的二进制对应的十进制数。

输入描述 Input Description

一行:一个正整数a

输出描述 Output Description

一行:见题目所述

样例输入 Sample Input

【样例输入1】 5 【样例输入2】 1

样例输出 Sample Output

【样例输出1】 2 【样例输输出2】 0

数据范围及提示 Data Size & Hint

【样例1说明】
5 的二进制表示为 101(没有前导零位),其二进制取反后为 010。所以你需要输出 2

【样例2说明】
1 的二进制表示为 1(没有前导零位),其二进制取反后为 0。所以你需要输出 0 。
【数据说明】
给定的整数 a保证在 32 位带符号整数的范围内。
a >= 1
二进制数不包含前导零位。


0
已采纳
张展嘉
张展嘉
新手天翼
新手天翼
  while(x){
        if(x&1==1){
            int c;
        }else{
//          cout<<x<<' ';
            a[++cnt]=t;         
        }
        t=t<<1;
        x=x>>1;
    }
    for(int i=1;i<=cnt;i++){
        sum+=a[i];
    }

 

我要回答