Hva er et standardbytte?
I dataprogrammering og informatikk er en standardbytte en situasjon i et program der to variabler trenger å utveksle verdiene sine, noe som krever at det opprettes en tredje variabel for å fungere som en mellomting når verdiene overføres. Et standardbytte er et programmeringsparadigme, noe som betyr at det kan brukes i enhver situasjon der to dataopplysninger må utveksles, og ikke er knyttet til noen datatype eller programmeringsspråk. Det er mange tilfeller i programmer der verdier må byttes, men det er ofte en standardkomponent i samlinger og matriser når de brukes med sorteringsalgoritmer som må flytte elementer fra en indeks i samlingen til en annen, ved å bruke en midlertidig variabel for å holde verdien blir byttet. Fra et maskinvareperspektiv kan en standardbytte være en støttet prosessorfunksjon på lavt nivå for noen skalare datatyper, for eksempel heltall, noe som betyr at mellomverdien ikke trenger å opprettes i RAM (random access memory) for å bytte to tall.
Konseptet med en standardbytte kan sees med variablene A og B; på slutten av en standardbytte skal B være lik A, og A skal være lik B. Hvis et program bare tilordner B til A, vil verdien til A gå tapt og ikke senere kunne tilordnes B. Dette krever bruk av en midlertidig variabel som vil inneholde verdien til A mens B er tilordnet A. Det siste trinnet er å tilordne den midlertidige variabelen til B, fullføre byttet.
En veldig vanlig applikasjon for en standardbytte er når du bruker en sorteringsalgoritme på en matrise eller samling. Hvis en sorteringsalgoritme har bestemt at dataene i array Index 1 må byttes med dataene i Index 10, kan en standard swap av dataene utføres. Dette kan gjøres usedvanlig raskt ved å bruke pekerreferanser på språk som C.
En komplikasjon kan oppstå i noen objektorienterte programmeringsspråk når to objektforekomster må byttes. I noen veldig sjeldne tilfeller vil det å bytte objektreferanser ikke starte en faktisk bytte. I stedet er den eneste måten å utveksle objektene på å klone de interne dataene, felt for felt, mellom de to objektene og den midlertidige objektvariabelen.
Det er en teknikk som teknisk kan brukes til å utføre et standardbytte ved å bruke den eksklusive eller (XOR) logiske operatøren. Et XOR-bytte er avhengig av at når to biter beregnes med XOR, vil de i det vesentlige skape en maske som kan reverseres med en eller begge operatørene. På denne måten kan to variabler, A og B, byttes ved å først lage en maske med en XOR av de to variablene, deretter bruke XOR til å fjerne maskeringen for verdien for B og deretter verdien for A. Dessverre, selv om denne metoden unngår opprettelsen av en midlertidig variabel, vil den heller ikke bytte i alle tilfeller, spesifikt når A og B er lik hverandre og i tilfeller hvor kompilatoroptimalisering kan endre den faktiske operasjonen.