Deplasare biți - schimbarea pozițiilor biților într-un cuvânt de mașină .
Majoritatea computerelor nu pot adresa direct biții care sunt conținute în grupuri de 8, 16, 32 sau 64 de biți într-un cuvânt de mașină . Există multe instrucțiuni ale mașinii pentru a sprijini manipularea biților , inclusiv diferite tipuri de schimburi. Toate deplasările sunt similare între ele în comportamentul biților din mijloc, care sunt pur și simplu deplasați la stânga sau la dreapta cu o anumită cantitate. Cu toate acestea, comportamentul biților de margine care părăsesc cuvântul și care apar în cuvânt depinde de tipul de schimbare.
În electronică, deplasările de biți sunt efectuate pe registrele de deplasare .
O schimbare în care bitul de ieșire dispare fără a afecta biții rămași, iar bitul 0 este scris în locul bitului apărut .
Un exemplu despre cum funcționează operațiunea de schimb:
În majoritatea procesoarelor, bitul de ieșire este stocat în flag-ul de transport . Această funcție este utilizată pe scară largă atunci când lucrați cu numere pe mai mulți octeți .
În această schimbare, cuvântul este tratat nu doar ca un grup de biți, ci ca un întreg de complement a doi . Când este deplasat la stânga, se comportă ca o deplasare logică, când este deplasat la dreapta, bitul de ieșire dispare fără a afecta biții rămași, iar bitul corespunzător semnului este setat în locul bitului apărut.
Un exemplu de operare de schimbare a unui număr de 8 biți într-un cod direct:
Un exemplu de operare de schimbare a unui număr de 8 biți scris într-un cod suplimentar de până la 2:
Este ușor de observat că, cu o deplasare aritmetică, o deplasare la stânga corespunde înmulțirii cu 2, iar o deplasare la dreapta corespunde împărțirii cu 2 (în cazul general, la baza sistemului numeric) rotunjită la −∞. De exemplu:
1011 = -5 1111 = -1 >>a1 >>a1 ---- ---- 1101 = -3 1111 = -1Implementarea în circuit a operațiunilor de schimb este foarte simplă. De aceea, aceste operații sunt recomandate a fi folosite pentru operațiuni de înmulțire și împărțire a numerelor întregi cu numere egale cu puterea lui 2 (2, 4, 8, 16, 32, 64 etc.) - cu excepția cazului, desigur, o astfel de rotunjire. a numerelor negative nu interferează.
Cu această schimbare, bitul de ieșire apare în locul numărului liber care a apărut la celălalt capăt.
Arhitectura multor procesoare include un flag de transport (de exemplu, cfpe x86 ). Această operație efectuează o rotație pe numărul ( n +1) de biți, constând dintr-un registru și un flag de transport.
De exemplu, dacă avem numărul 11111010b în registru, indicatorul de transport la dreapta al deplasării ciclice este 0.
Operația de rotație a bitului de transport este utilizată atunci când se lucrează cu numere pe mai mulți octeți . În special, pentru a deplasa la dreapta un număr lung cu 1, ștergeți [1] cf (în cazul unei diviziuni cu semne, scrieți-l la cfbitul de ordin superior al cuvântului de ordine superioară) și rotiți cu câte unul prin cffiecare cuvânt, începând de sus. De exemplu, să presupunem că avem numărul 011000111100b care se întinde pe trei cuvinte de 4 biți:
A fost: HI=0110, MED=0011, LO=1100, cf=0 După schimbarea HI: HI=0011, MED=0011, LO=1100, cf=0 După schimbarea MED: HI=0011, MED=0001, LO=1100, cf=1 După schimbarea LO: HI=0011, MED=0001, LO=1110, cf=0Deplasările prin registrul flag cu mai mult de 1 bit nu sunt practic utilizate.