2 条题解

  • 0
    @ 2025-9-26 12:19:04

    bitset方法:

    #include <bits/stdc++.h>
    using namespace std;
    
    /*
      题意:
        输入一个 int 类型整数,输出它的 32 位二进制补码表示。
        比如输入 7,输出 00000000000000000000000000000111。
    
      解法思路:
        - C++ 中 int 通常为 32 位有符号整数。
        - 直接将它转为 unsigned 类型,再用 bitset<32> 存储即可。
          这样负数也能自动显示出补码形式(因为位级别不变)。
        - 输出 bitset 即可得到补码的 0/1 字符串。
    */
    
    int main() {
        ios::sync_with_stdio(false);
        cin.tie(nullptr);
    
        int x;
        if (!(cin >> x)) return 0;
    
        // 将有符号 int 转为无符号整数,确保按补码解释
        unsigned int u = static_cast<unsigned int>(x);
    
        // bitset<32> 自动以二进制形式存储
        bitset<32> bits(u);
    
        cout << bits.to_string() << "\n";
        return 0;
    }
    
    
    • 0
      @ 2025-9-26 12:18:32

      普通方法:

      #include<bits/stdc++.h>
      using namespace std;
      int a[100000000];
      int main(){
      	int n;
      	cin>>n;
      	for(int i=1;i<=32;i++){
      		a[i]=(n&1);
      		n>>=1; 
      	} 
      	for(int i=32;i>=1;i--){
      		cout<<a[i];
      	}
      	
      	return 0;
      }
      
      • 1

      信息

      ID
      186
      时间
      1000ms
      内存
      64MiB
      难度
      2
      标签
      递交数
      31
      已通过
      23
      上传者