Hvordan du bit flip i c

Hvordan du bit flip i c
Flipping litt betegner å bytte eller reversere den eksisterende biten. Teknikken for analytisk omorganiserende biter eller andre elementer av data mindre enn til og med en byte er kjent som bitmanipulering. C -programmeringsspråket er dyktig til å håndtere biter.

Den bitvise operatøren opererer med biter og utfører operasjoner gradvis. Skiftoperatørene utfører den nødvendige overgangen fra venstre operatør til høyre operatør. Den aktuelle operatøren må være positiv. Bitene som har blitt tomme, erstattes av null.

Vi skaffer oss et binært siffer og skifter verdien mot motstanderen når vi snur litt. La oss se på hvordan du bytter biter i C:

Bruker bitvis operatøren for å reversere hver eneste heltall:

Å bytte eller reversere den eksisterende bitstaten anses å bla litt. Vi ville utføre en sløyfe som starter 0 i omfanget av heltallet og bytte hver bit en om gangen for å snu hvert element av binære verdier.

På den annen side tilbyr C -programmeringsspråket en bitvis komplementoperatør ~ som kan brukes til den oppgaven. Bitvis komplement undersøker komponenten i argumentbit. Mens operandens passende verdi er 0, konverterer den til 1; ellers tildeler den til 0. Her er et C -program som inneholder og reverserer hvert element i et binært tall ved hjelp av en bitvis operatør ~.

#inkludere
int main ()

int n, flippednum;
printf ("Skriv inn et tall:");
Scanf ("%d", & n);
flippednum = ~ n;
printf ("faktisk tall = %d (i desimal) \ n", n);
printf ("Verdi etter å ha flippet bitene = %d (i desimal)", flippednum);
retur 0;

I dette eksemplet inkluderer vi først biblioteket . Så kaller vi Main () -funksjonen. Her initialiserer vi to variabler. Den ene variabelen, 'N', har en heltalldatatype, og den andre variabelen, 'Flippednum,' lagrer verdien vi ønsker å snu.

I tillegg til dette bruker vi printf () -funksjonen for å vise utsagnet 'Enter et tall'. Så brukeren oppgir noen verdi av sitt eget valg. SCANF () -metoden kalles. Denne metoden brukes til å oppgi konfigurerte data. Vi bruker kommandoen 'flippednum' slik at verdien som er lagt inn av brukeren blir vendt. Vi vipper bitene ved å bruke bitvis komplementtegn ~.

I neste trinn brukes PRINTF () -metoden først for å skrive ut det faktiske nummeret, og deretter skriver den ut verdien etter å ha vendt bitene til det angitte nummeret. Vi avslutter programmet med retur 0 -kommandoen.

Bruk til sløyfe for å snu bitene:

Vi itererer gjennom hver av bitene til nummeret. Vi tar et usignert heltall, vend hvert av elementene og får heltallet til å ha vendt biter i dette scenariet.

#inkludere
#inkludere
usignerte int -revbits (usignert int n)

usignert int number_of_bits = sizeof (n) * 8;
usignert int rev_num = 0, j, temp;
for (j = 0; j < NUMBER_OF_BITS; j++)

temp = (n & (1 << j));
if (temp)
Rev_num | = (1 << ((NUMBER_OF_BITS - 1) - j));

Return Rev_num;

int main ()

usignert int a = 5;
printf ("%u", revbits (a));
getChar ();

Her skal vi starte programmet ved å integrere overskriftsfilene og . Her passerer vi den 'usignerte N' -variabelen, som har en heltalldatatype. Vi erklærer en ny variabel som lagrer antall biter. Her multipliserer vi størrelsen på heltallet med 8. Så initialiserer vi en variabel 'Rev_num' som lagrer det flippet nummeret.

Vi initialiserer også en variabel for variablene 'for loop' og 'temp' som midlertidig holder den flippede verdien av det definerte heltallet. I tillegg til dette bruker vi en loop. Vi erklærer en variabel 'J' i løkken og bruker tilstanden på variabelen at verdien må være mindre enn flere biter. Den siste delen av for -loopen viser et økning i verdien av variabel 'J'. Så bruker vi "hvis" -tilstanden på "temp" -variabelen. Dette viser at hvis 'Rev_n' ikke er lik antall biter, returnerer returerklæringen verdien av 'Rev_n',

Videre brukes hovedfunksjonen () for å teste den ovennevnte metoden. Nå initialiserer vi 'usignert en' variabel med heltalldatatype. Printf () -metoden viser nå verdien av heltallet etter å ha reversert bitene. Til slutt bruker vi GetChar () -funksjonen. Her tar getchar () -metoden bare én karakter som et argument.

Bruk mens du er sløyfe for å snu bitene:

Her må vi fortsette å legge til bitene til et heltall i omvendte tall til heltallet tilsvarer null. Bytt rester av biter av omvendt nummer når det definerte tallet treffer null.

#inkludere
#inkludere
usignerte int -revbits (usignert int n)

usignert int telling = størrelse av (n) * 8 - 2;
usignert int rev_n = n;
n >> = 2;
mens (n)

Rev_n = 2;
telle--;

Rev_n <<= count;
Retur Rev_n;

int main ()

usignert int a = 7;
printf ("%u", revbits (a));
getChar ();

I begynnelsen av programmet innlemmer vi overskriftsfilene og . Så definerer vi en funksjon som reverserer bitene. Variabelen 'Unsigned N' har en heltalldatatype; Dermed gir vi det her. Vi oppretter en ny variabel for å beholde antallet biter. Størrelsen på heltallet multipliseres med åtte i dette tilfellet. Deretter skaffer vi oss en variabel kalt 'Rev_num' for å holde det flippede nummeret.

Vi bygde i tillegg en variabel for While Loop og påførte tilstanden på denne variabelen. I tillegg til dette bruker vi en stund loop. I løpet av mens sløyfen bruker vi betingelsen om at hvis 'Rev_n' er mindre enn eller lik 2, eller hvis 'Rev_n' ikke er lik verdien av 'n', reduserer vi tellingen. Slik får vi verdien av "Rev_n '.

Nå bruker vi Main () -funksjonen, og her vil vi initialisere variabelen 'usignert A' ved å angi verdien av denne variabelen. Denne variabelenes datatype er et heltall. Etter å ha reversert bitene, returnerer metoden Printf () resultatet. Videre har vi brukt getchar () -funksjonen.

Konklusjon:

I denne artikkelen har vi undersøkt metodene for å snu bitene på C -språket. I den første situasjonen tar vi ethvert heltall fra brukeren, og deretter bruker vi den bitvis operatøren ~ for å snu alle bitene i det definerte nummeret. Så observerer vi hvordan vi kan vende bitene ved å bruke for og mens du er loop.