Hvad er en standardbytte?
I computerprogrammering og datalogi er en standardbytte en situation i et program, hvor to variabler skal have deres værdier udvekslet, hvilket kræver oprettelse af en tredje variabel for at fungere som en formidler, når værdierne overføres. En standardbytte er et programmeringsparadigme, hvilket betyder, at det kan anvendes til enhver situation, hvor to stykker data skal udveksles, og er ikke bundet til nogen datatype eller programmeringssprog. Der er mange tilfælde i programmer, hvor værdier skal byttes, men det er ofte en standardkomponent i samlinger og arrays, når de bruges med sorteringsalgoritmer, der skal flytte genstande fra et indeks i samlingen til en anden ved hjælp af en midlertidig variabel til at holde værdien, der bliver byttet. Fra et hardware-perspektiv kan et standardbytte være en understøttet processorfunktion på lavt niveau for nogle skalære datatyper, såsom heltal, hvilket betyder, at mellemværdien ikke behøver at oprettes i Random Access Memory (RAM) for at bytte to tal.
Begrebet en standardbytte kan ses med variablerne A og B; Ved afslutningen af et standardbytning skal b svare til A, og A skal svare til B. Hvis et program simpelthen tildeler B til A, vil værdien af A gå tabt og kan ikke senere tildeles B. Dette kræver anvendelse af en midlertidig variabel, der vil have værdien af A -tiden B, der tildeles A. Det sidste trin er at tildele den midlertidige variabel værdi til B, der gennemfører swap.
En meget almindelig applikation til en standardbytte er, når du bruger en sorteringsalgoritme på en matrix eller en samling. Hvis en sorteringsalgoritme har bestemt, at dataene ved Array Index 1 skal byttes med dataene ved indeks 10, kan der udføres en standardbytte af dataene. Dette kan gøres usædvanligt hurtigt ved hjælp af pointerreferencer på sprog som c.
En komplikation kan forekomme i nogle objektorienterede programmeringssprog, når to objektforekomster skalblive byttet. I nogle meget sjældne tilfælde vil blot at bytte objektreferencerne ikke starte en faktisk swap. I stedet er den eneste måde at udveksle objekterne på at klone de interne data, felt for felt, mellem de to objekter og den midlertidige objektvariabel.
Der er en teknik, der teknisk set kan bruges til at udføre en standardbytte ved hjælp af den eksklusive-eller (XOR) logiske operatør. En XOR -swap er afhængig af det faktum, at når to bit beregnes med XOR, vil de i det væsentlige skabe en maske, der kan vendes med en eller begge af operatørerne. På denne måde kan to variabler, A og B, udskiftes ved først at skabe en maske med en XOR af de to variabler, så ved hjælp af XOR til at afmaske først værdien for B og derefter værdien for A. Desværre, selvom denne metode undgår oprettelsen af en midlertidig variabel, vil den heller ikke gøre en bytte i alle tilfælde, specielt når en og B er lig med hinanden og i tilfælde, i hvilken kompilator optimering kan ændre det, som de kan skifte, de aktuelle.