资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
输入[-128,127]内的整数,输出其二进制表示。提示,可使用按位与&
输入格式
例:7
输出格式
例:00000111
样例输入
一个满足题目要求的输入范例。
例:
7
样例输出
与上面的样例输入对应的输出。
例:
00000111
数据规模和约定
输入数据中每一个数的范围。
例:0<n,m<100, 0<=矩阵中的每个数<=1000。
解题思路:
这道题和普通的二进制的输出不同,这里的输入包括了负数,在计算机中,正数用原码表示,负数用补码表示,第一位都是判断用的,0表示正数,1表示负数,那么正数的话就是正常二进制计算,负数的话就是取反加一,代码如下:
#include<bits/stdc++.h>
using namespace std;
void qufan(char a[8])//取反
{
for(int i = 0;i < 7;i ++)
{
if(a[i] == '0')
a[i] = '1';
else
a[i] = '0';
}
}
void jiayi(char a[8])//
{
int x = a[0] - '0';
x = x + 1;
a[0] = x + '0';
if(x == 1)
return ;
int i = 0;
while(x == 2 && i < 7)
{
a[i] = '0';
x = a[ ++i] - '0';
x += 1;
}
a[i] = '1';
}
int main()
{
char a[8];
int i = 0, m, n;
for( i = 0; i < 8; i++)//赋初值
a[i] = '0';
cin >> m;
n = m;
m = abs(m);
i = 0;
while(m)
{
int n = m % 2;
a[i ++] = n + '0';
m /= 2;
}
a[7] = '0';//范围限定,最后一位肯定是0
if(n < 0)//如果是负数
{
a[7] = '1';//此时最后一位是0,判断符号用的
qufan(a);
jiayi(a);
}
for(int i = 7;i >= 0;i --)
cout << a[i];
return 0;
}