列表

详情


NC232831. 补码

描述

你是一台超级计算机,你非常适合计算一个数字的补码,现在给你若干个数字,请你输出32位数字的01数字串代表他的补码。
正数:
正整数的补码是其二进制表示,与原码相同
负数:
求负整数的补码,将其原码除符号位外的所有位取反(0变1,1变0,符号位为1不变)后加1

输入描述

一行输入一个数字T
随后T行每行一个数字代表给定数字

输出描述

总共输出T行每行一个长度为32的数字串。

示例1

输入:

1
1

输出:

00000000000000000000000000000001

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++(g++ 7.5.0) 解法, 执行用时: 217ms, 内存消耗: 3560K, 提交时间: 2022-10-22 17:04:00

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
	int n, T;
	cin >> T ;
	while (T--) {
		//TODO
		cin >> n;
			cout << bitset<32>(n) << endl;

	}

	return 0;
}

Python3 解法, 执行用时: 564ms, 内存消耗: 7800K, 提交时间: 2022-04-03 20:14:35

t = int(input())
for i in range(t):
    a = int(input())
    if a < 0:
        res = bin(a & 0xffffffff)
        print(res[2:])
    else:
        print('{:032b}'.format(a))

C++ 解法, 执行用时: 233ms, 内存消耗: 3608K, 提交时间: 2022-02-14 19:30:13

#include<bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	cin>>t;
	while(t--){	
	int n;
	cin>>n;
	bitset<32> s(n);
	cout<<s<<endl;
	}

return 0;
}

上一题