operații simple și rapide de emulare cu linii de biți

line Bit ar putea simplifica implementarea unor algoritmi în limba platformei „1C: Enterprise 8“. Dar, în timp ce în platforma cu liniile de biți ale operațiunilor de acolo. În același timp, s-a făcut încercări de a simula aceste operațiuni transformări pe un număr de biți bazate pe cicluri de prelucrare individuale, care afectează grav viteza lor. A propus o nouă soluție simplă, bazată pe reprezentarea șirurile de biți siruri de caractere „0“ și „1“. Acesta oferă exemple de cod de execuție operații logice majore AND, OR, XOR, NO fără cicluri.
Așa cum sa discutat aplet obținerea valorilor succesive ale codului Gray, care poate fi folosit pentru a accelera căutarea variantelor.

Într-un articol intitulat „Calcularea hash SHA-1 de către 1C. operațiunile de biți în 1C sau lecția de matematica binară „este un set de funcții care vă permite să lucrați cu numere ca un șir de octet. În centrul tuturor funcțiilor menționate există cicluri de procesare biți.

O modalitate alternativă de a reprezenta șiruri de biți este că le place numerele reprezintă șiruri de caractere. șiruri de biți de stocare ca șiruri de caractere de „0“ și „1“ și ia în cel puțin 8 (16) ori mai multă memorie, dar face posibilă pentru a scăpa de cicluri atunci când efectuează operații logice pe rândurile.

1. „SAU“

De exemplu, funcționarea logică «sau» (sau, disjuncții) de biți de intrare șiruri X și Y poate fi realizată după cum urmează:

în care șirul de format presupune un pic predeterminat, absența numărului de diviziuni în adăugarea grup zerouri și prezentarea lungimii lanțului de la zero zerouri egal cu bitul de șirul de biți de conducere. Aceasta este:

De exemplu, în conformitate cu normele de efectuare operațiuni logice „sau“ pentru liniile originale

Rezultatul este obținut:

Cu alte cuvinte, șirul este convertit într-un număr zecimal, se adaugă apoi numărul zecimal. Ca urmare, deversărilor individuale devin „0“, „1“ sau „2“. Apoi, numărul liniei este format din nou, în care „2“ este în picioare pe un loc de adăugare a celor două unități este schimbat la „1“, în conformitate cu normele de execuție ale operației logice.

În esență, această abordare fiecare bit procesat de un sumator separat și însumat în numere limitate elimină evacuările prin sumatoarele link-ul de transfer.

Datorită naturii lungimii biți funcția „Format“ (caractere) siruri de caractere prelucrate astfel limitată de 309 biți (simboluri).

2. Funcția "XOR"

Doar pur și simplu pare logic „sau exclusiv» (xor, nonequivalence):

De exemplu, să ia două șir pe 64 de biți:

și pentru a obține următorul rezultat corect:

3. „NU“ funcția

Chiar și mai ușor pare operație negație logică este „nu» (nu, negație):

4. „ȘI“

Se pare operare un pic mai complicat logică „și» (și, coroborat):

5. Observații și clarificări

Deși în cazul utilizării de bază a operațiunilor pe șiruri de biți sugerează că acestea sunt de lungime egală cu lungimea corespunzătoare preselectate cuvânt fixă, iar funcțiile funcționează cu rânduri de lungimi diferite, în cazul în care aceasta este mai mică decât adâncimea de biți predeterminată. Atunci când această linie este aliniat la dreapta. Desigur, acest lucru poate fi schimbat dacă se dorește, complicând ușor codul.

Marele avantaj al unei astfel de reprezentare a liniilor de biți este abilitatea de a stoca informațiile lor în baza de date (spre deosebire de numere lungi). Astfel, necesitatea de a converti un număr de rânduri și vice-versa, în care nici un cicluri nu este de ajuns, în cele mai multe cazuri nu apar.

Viteza de recepție de verificare arată un câștig redus de aproximativ 15 ori în comparație cu funcțiile prevăzute în articolul „Operatorii la nivel de bit Lecții 1C sau matematică binare“.

Mai degrabă bonus de mare este abilitatea de a contoriza numărul celor (zerouri), în conformitate cu limbajul încorporat funcția StrChisloVhozhdeny (BitovayaStroka, „1“), care necesită optimizare pentru numerele chiar și în nivelul de asamblare [temeinic cu privire la calculul de biți unitare].

Printre funcțiile pe care le puteți verifica cu ușurință semnificația biților individuali pot fi funcții utile și alte șir.

Cu o dorință puternică, astfel, posibil să se pună în aplicare funcții aritmetice. Cu toate acestea, în acest caz, cifre mai mici de numere care se află în partea stângă.

Aici, de exemplu, pentru că operațiunea de creștere este realizată (bitul cel mai puțin semnificativ pe stânga):

6. Aplicații practice: Codul Gray

Rezultatul este următoarea funcție:

În cazul în care secvența de apel cu o valoare inițială „0000“, cod funcția produce următoarea secvență de valori: