Vad är en standardbyte?
I datorprogrammering och datavetenskap är en standardbyte en situation i ett program där två variabler måste bytas ut sina värden, vilket kräver skapandet av en tredje variabel för att fungera som en mellanhand när värdena överförs. En standardbyte är ett programmeringsparadigm, vilket innebär att det kan tillämpas på alla situationer där två data måste bytas ut och inte är bundet till någon datatyp eller programmeringsspråk. Det finns många fall i program där värden måste bytas ut, men det är ofta en standardkomponent i samlingar och matriser när de används med sorteringsalgoritmer som måste flytta objekt från ett index i samlingen till ett annat, med en tillfällig variabel för att hålla värdet bytas. Ur ett hårdvaruperspektiv kan en standardbyte vara en processorfunktion med låg nivå för vissa skalära datatyper som heltal, vilket innebär att mellanhandsvärdet inte behöver skapas i slumpmässigt åtkomstminne (RAM) för att byta två nummer.
Konceptet med en standardbyte kan ses med variablerna A och B; I slutet av en standardbyte ska B vara lika med A, och A ska vara lika med B. Om ett program helt enkelt tilldelar B till A, kommer värdet på A att gå förlorat och kan senare tilldelas B. Detta kräver användning av en tillfällig variabel som kommer att hålla värdet på en stund B tilldelas A. Det sista steget är att tilldela det tillfälliga variabla värdet till B, fullbordande av SWAP.
En mycket vanlig applikation för en standardbyte är när du använder en sorteringsalgoritm på en matris eller samling. Om en sorteringsalgoritm har fastställt att data vid arrayindex 1 måste bytas med data vid index 10, kan en standardbyte av data utföras. Detta kan göras exceptionellt snabbt med hjälp av pekarreferenser på språk som c.
En komplikation kan uppstå på vissa objektorienterade programmeringsspråk när två objektinstanser behöverbytas ut. I vissa mycket sällsynta fall kommer du helt enkelt att byta objektreferenser att initiera ett faktiskt byte. Istället är det enda sättet att utbyta objekten att klona de interna data, fält för fält, mellan de två objekten och den tillfälliga objektvariabeln.
Det finns en teknik som tekniskt kan användas för att utföra en standardbyte med hjälp av den exklusiva eller (xor) logiska operatören. En XOR -byte förlitar sig på det faktum att när två bitar beräknas med XOR kommer de i huvudsak att skapa en mask som kan vändas med en eller båda operatörerna. In this way, two variables, A and B, can be swapped by first creating a mask with a XOR of the two variables, then using XOR to unmask first the value for B and then the value for A. Unfortunately, although this method avoids the creation of a temporary variable, it also will not make a swap in all instances, specifically when A and B are equal to each other and in cases in which compiler optimization might change the actual operation.