二進制加法

  1. #include <stdio.h>   
  2.    
  3. #define ARRAYSIZE 16   
  4.    
  5. void binaryadd(int *array1, int *array2, int *array3)   
  6. {   
  7.     int carry = 0;   
  8.     int i;   
  9.    
  10.     for (i = ARRAYSIZE - 1; i >= 0; --i) {   
  11.         array3[i + 1] = array1[i] ^ array2[i] ^ carry;   
  12.         carry = ((array1[i] ^ array2[i]) & carry) | (array1[i] & array2[i]);   
  13.     }   
  14.     array3[i + 1] = carry;   
  15. }   
  16.    
  17. void printarray(int *array, int size)   
  18. {   
  19.     int i;   
  20.     for (i = 0; i < size; ++i)   
  21.         printf("%d ", array[i]);   
  22.     printf("\\n");   
  23. }   
  24.    
  25. main()   
  26. {   
  27.     int i;   
  28.     int array1[ARRAYSIZE]   =    {0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 1, 1, 0};   
  29.     int array2[ARRAYSIZE]   =    {0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0};   
  30.     int array3[ARRAYSIZE+1] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};   
  31.    
  32.     binaryadd(array1, array2, array3);   
  33.    
  34.     printf("  ");   
  35.     printarray(array1, ARRAYSIZE);   
  36.     printf("  ");   
  37.     printarray(array2, ARRAYSIZE);   
  38.     printarray(array3, ARRAYSIZE+1);   
  39. }   

本文轉載自http://www.itjianghu.net/120109/40917404895833328.htm

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章