Advertisement
huyhung94

Cộng 2 số nguyên ( Dùng &, ^, | )

Apr 9th, 2015
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.11 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <conio.h>
  3.  
  4. void dec2bin(int num, int a[], int *n){
  5.     int i=0;
  6.     while(num!=0){
  7.         a[i++] = num % 2 ;
  8.         num /= 2;
  9.     }
  10.     *n = i;
  11. }
  12.  
  13. int bin2dec(int a[], int n){
  14.     int i=0, lthua=1, result=0;
  15.     for(i=0;i<=n;i++){
  16.         result += a[i] * lthua;
  17.         lthua *= 2;
  18.     }
  19.     return result;
  20. }
  21.  
  22. int main(){
  23.     int a[100], b[100], num1, num2, n, m, i, k;
  24.     printf("Nhap so 1: ");
  25.     scanf("%d",&num1);
  26.     printf("Nhap so 2: ");
  27.     scanf("%d",&num2);
  28.     dec2bin(num1,a,&n);
  29.     dec2bin(num2,b,&m);
  30.    
  31.     if(n<m){
  32.         k = m;
  33.         for(i=n;i<=k;i++)      
  34.             a[i]=0;
  35.         b[i-1] = 0;
  36.     }else
  37.         if(n>m){
  38.             k = n;
  39.             for(i=m;i<=k;i++)
  40.                 b[i]=0;
  41.             a[i-1] = 0;
  42.         }else{
  43.             k = m;
  44.             a[k] = b[k] = 0;
  45.         }
  46.     int sum[100], carry=0; 
  47.     for(i=0;i<=k;i++){
  48.         sum[i] = (a[i] ^ b[i] ) ^ carry;
  49.         carry = (((a[i] ^ b[i]) & carry) | (a[i] & b[i])); 
  50.     }  
  51.     printf("\n%4d = ",num1);
  52.     for(i=k;i>=0;i--)
  53.         printf("%d ",a[i]);
  54.        
  55.     printf("\n%4d = ",num2);
  56.     for(i=k;i>=0;i--)
  57.         printf("%d ",b[i]);
  58.    
  59.     printf("\n  -----------------");
  60.     printf("\n%4d = ",bin2dec(sum,k)); 
  61.     for(i=k;i>=0;i--)
  62.         printf("%d ",sum[i]);
  63.     printf("\n");
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement