Advertisement
GatoBooster

Lab Pregunta 1 Complemento de Binarios

Sep 8th, 2017
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.66 KB | None | 0 0
  1. //gcc 5.4.0
  2.  
  3. #include  <stdio.h>
  4. #include  <math.h>
  5. #define  MAX 16
  6.  
  7. int main(void)
  8. {
  9.     long int cantNum, num, auxnum, i=0,j=0,k=0,flag=0;
  10.     int bits[MAX]={};
  11.    
  12.     do{
  13.     scanf("%ld",&cantNum);
  14.     }while((cantNum < 1) || (cantNum > 100));
  15.    
  16.     for(i=0; i < cantNum; i++){    
  17.        
  18.         flag = 0;
  19.        
  20.         do{
  21.         scanf("%ld",&num);
  22.         }while((num < -32768) || (num > 32767));    
  23.        
  24.         for(j=0; j < MAX; j++){
  25.             bits[j]=0;
  26.         }
  27.        
  28.         auxnum = num;
  29.         k= (MAX - 1);
  30.        
  31.         while(num != 0){
  32.             bits[k] = num % 2;
  33.             k--;
  34.             num = num / 2;
  35.         }
  36.        
  37.         for(j=0; j < MAX; j++){
  38.             //printf("%d",bits[j]);
  39.             if(bits[j] < 0){
  40.                 bits[j] = (-1 * bits[j]);
  41.                 flag = 1;
  42.             }
  43.         }
  44.  
  45.        
  46.         if(flag == 0){
  47.            
  48.             printf("%ld en C2 = ",auxnum);
  49.            
  50.             for(j=0; j < MAX; j++){
  51.                 printf("%d",bits[j]);
  52.             }
  53.         }else{
  54.                        
  55.             //Obtener el Complemento 1
  56.             for(j=0; j < MAX; j++){
  57.                 flag = 0;
  58.                 if((bits[j] == 0)&&(flag==0)){
  59.                     bits[j] = 1;
  60.                     flag = 1;
  61.                 }        
  62.                 if((bits[j] == 1)&&(flag==0)){
  63.                     bits[j] = 0;
  64.                     flag = 0;
  65.                 }                
  66.             }
  67.            
  68.             flag = 0;
  69.             //Obtener el Complemento 2
  70.             printf("%ld en C2 = ",auxnum);
  71.             for(j=MAX-1; j >= 0; j--){
  72.                
  73.                 if(j == (MAX-1)){
  74.                        
  75.                     if(bits[j] == 1){
  76.                         bits[j] = 0;
  77.                         flag = 1;
  78.                     }
  79.                     if((bits[j] == 0)&&(flag == 0)){
  80.                         bits[j] = 1;
  81.                         flag = 0 ;
  82.                     }
  83.                 }
  84.                
  85.                 if(j < (MAX - 1)){
  86.                    
  87.                     if((bits[j] == 0)&&(flag == 1)){
  88.                         bits[j] = 1;
  89.                         flag = 0;    
  90.                     }                
  91.                
  92.                     if((bits[j] == 1)&&(flag == 1)){
  93.                         bits[j] = 0;  
  94.                         flag = 1;
  95.                     }  
  96.                 }
  97.             }
  98.             for(j=0; j < MAX; j++){
  99.                 printf("%d",bits[j]);
  100.             }
  101.             }
  102.                     printf("\n");
  103.         }
  104.  
  105.     return 0;
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement