Ladies_Man

1_16 BITwise string compare

Dec 15th, 2013
213
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.91 KB | None | 0 0
  1. #include <stdio.h>
  2.  
  3. int strdiff(char *a, char *b)
  4. {
  5.     int i = 0;
  6.     while (((a[i] != 13) && (a[i] != 0)) && ((b[i] != 13) && (b[i] != 0)) && (a[i] == b[i]))
  7.         i++; //находим до какого символа строки одинаковы
  8.  
  9.     int n = i, k;
  10.     char sum;
  11.     if (a[n]!=b[n]) {            
  12.         sum = a[n] ^ b[n];         //(1^0=1; 1^1=0)
  13.         i = 0;
  14.         while (i < 8) {                //проходим 8 раз
  15.             if ((sum & (1<<i)) > 0) {    //получаем отдельный символ
  16.                 k = i;          //и если это "1" то символы при этом i различаются
  17.                 break;        
  18.             }
  19.             i++;
  20.         }
  21.     n = n * 8 + k;   //в каждом символе 8 бит => до различия (8 * n + k) битов
  22.     return n;      
  23.     }
  24.     else
  25.       return -1;  
  26.  
  27. }
Advertisement
Add Comment
Please, Sign In to add comment