1. 程式人生 > 其它 >原始碼,反碼,補碼怎麼做?yangtuoyu的部落格

原始碼,反碼,補碼怎麼做?yangtuoyu的部落格

#include<bits/stdc++.h>
using namespace std;
int a[10001],b[10001],c[10001];//a是存放二進位制的,b是補碼,c是反碼
int main(){
    int n;
    cin>>n;
    if(n==0){
        cout<<"00000000000000000000000000000000"<<endl;//0特殊處理
        cout<<"00000000000000000000000000000000"<<endl;
        cout<<"00000000000000000000000000000000";
    }
    if(n>0){
        int m=0;
        int t=n;
        
while(n>0){ a[m]=n%2; n=n/2; m++; }//除法,求二進位制的方法之一 for(int i=31;i>=0;i--){ cout<<a[i]; } cout<<endl;//輸出原始碼 for(int i=31;i>=0;i--){ cout<<a[i]; } cout<<endl;//
輸出補碼 for(int i=31;i>=0;i--){ cout<<a[i]; }//輸出反碼 }//正數情況下原始碼,補碼,反碼一樣 if(n<0){//負數情況 a[31]=1;//改變符號位 int m=0; int t=n; n=abs(n);//變正數 while(n>0){ a[m]=n%2; n=n/2; m++; }//除法,求二進位制 for
(int i=31;i>=0;i--){ cout<<a[i]; } cout<<endl;//輸出原始碼 for(int i=31;i>=0;i--){ if(i==31){ cout<<a[i]; continue; }//符號位特殊處理 if(a[i]==1){ c[i]=0; b[i]=0; }else{ c[i]=1; b[i]=1; } }//數字對換,0變1,1變0,求反碼 if(b[0]==0){ b[0]=b[0]+1;//是0的話就加一 }else{ b[0]=b[0]+1; for(int i=0;i<=31;i++){ if(b[i]>1){ b[i]=0; b[i+1]=b[i+1]+1; } } }//否則進位 for(int i=31;i>=0;i--){ if(i==31){ continue; } cout<<b[i]; }//輸出除符號位以外的數 cout<<endl; cout<<"1";//輸出符號位 for(int i=31;i>=0;i--){ if(i==31){ continue; } cout<<c[i]; }//輸出除符號位以外的數 } }

網上很少有這種,我查過,而且就算有,也比我的複雜,而且有一群人在抄襲,轉載成自己的程式碼,希望大家支援此做法,也望不要有人再抄襲,轉載成自己的程式碼了