码迷,mamicode.com
首页 > 其他好文 > 详细

2020 HDU校赛 Problem I

时间:2020-06-20 22:18:58      阅读:63      评论:0      收藏:0      [点我收藏+]

标签:表示   因此   数据   cout   str   lang   根据   它的   lse   

题面

Problem Description
在计算机中,对于定点数有三种不同的表示方法。在本题中,假定码的长度固定为8位,从左往右依次编号为第1到8位,第1位为最高位。

x的原码:最高位为符号位,正数符号位为0,负数符号位为1,第2到7位为x的二进制表示。正负0的原码不同。

x的反码:原码符号位除外,其他位按位取反,即1变0,0变1。

x的补码:正数的补码等于原码,负数的补码等于反码+1,因此正负0的补码相同。

给定整数x,请给出它的原码、反码和补码。

Input
第一行包含一个正整数T(1≤T≤300),表示测试数据的组数。

每组测试数据包含一行,首先是一个符号"+‘‘或"-‘‘,表示x的正负,然后是一个非负整数y(0≤y≤100),表示x的绝对值为y。

Output
对于每组数据,输出三行,第一行为原码,第二行为反码,第三行为补码。

Sample Input
4
+0
+1
-0
-3

Sample Output
00000000
01111111
00000000
00000001
01111110
00000001
10000000
11111111
00000000
10000011
11111100
11111101

思路

码制的转换,根据二进制转换成相对于的编码就可以了。

代码实现(比赛的时候写的,有点乱,将就看)

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cstring>
#include<queue>
#include<cmath>
using namespace std;
int main () {
    int t;
    cin>>t;
    while (t--) {
    int num,temp;
    char zf;
    int s[8];
    cin>>zf;
    cin>>num;
    int ans=num;
    memset (s,0,sizeof (s));
    int its=0;
   while(num!=0)  {
     temp=num%2;
     s[its]=temp;              
     its++;
     num/=2;
}
   if (zf==‘-‘) cout<<1;
   if (zf==‘+‘) cout<<0;
   if (ans!=0)for(int j=6;j>=0;j--) {           //算出原码
    cout<<s[j];
}
   else if (ans==0) {
       for (int i=6;i>=0;i--) {
           s[i]=0;
           cout<<s[i];
       }
   }
   cout<<endl;
   int k[8];
   if (zf==‘-‘) cout<<1;
   if (zf==‘+‘) cout<<0;
   for (int j=6;j>=0;j--) {
      if (s[j]==0) k[j]=1;      //反码处理
      else k[j]=0;
      cout<<k[j];
   }
   cout<<endl;
   if (zf==‘+‘) {
      cout<<0;
      for (int i=6;i>=0;i--) cout<<s[i];
      cout<<endl;
   }
   else if (ans==0) cout<<"00000000"<<endl;
   else {
    if (zf==‘-‘) cout<<1;
   if (zf==‘+‘) cout<<0;
   for (int i=0;i<=6;i++) {
       if (k[i]==0) {
           k[i]=1;
           break;
       }
       if (k[i]==1) k[i]=0;
   }
   for (int i=6;i>=0;i--) cout<<k[i];
   cout<<endl;
   
}
    }
    return 0;
}

2020 HDU校赛 Problem I

标签:表示   因此   数据   cout   str   lang   根据   它的   lse   

原文地址:https://www.cnblogs.com/hhlya/p/13170082.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!