Anteprima
Vedrai una selezione di 1 pagina su 2
Programma C - Bit Pag. 1
1 su 2
Disdici quando vuoi 162x117
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Sintesi
Bit


Il programma scritto in C prende come indirizzo una locazione interna e modifica il suo contenuto invertendo ciascun byte che compone la sua rappresentazione.
Il programma prenderai i bit e li invertira al contrario proprio come nel esempio:
11000000 00100001
il suo valore deve essere modificato in:
00000011 10000100
Il programma fara questo.
Estratto del documento

#include <stdio.h>

void InvertiByte(unsigned char* p)

{/* funzione ausiliaria: inverte un singolo byte */

unsigned char dest = 0;

int i, bit, maschera = 1;

for (i = 0; i < 8; i++)

{

bit = (*p & maschera) >> i; /* isola il bit i-esimo di *p */

dest = dest | (bit << 7 - i);

maschera = maschera << 1;

}

*p = dest;

}

void InvertiIntero(int* p)

{/* funzione principale: inverte un intero */

int i;

unsigned char* q = (unsigned char *) p;

for (i = 0; i < sizeof(int); i++)

InvertiByte(&q[i]);

}

void StampaMemoria(unsigned char* v, int n)

{ /* funzione ausiliaria (non richiesta) */

unsigned char a;

int i = 0, j;

char stringa_byte[9];

printf("Stampa della memoria in binario\n");

while (i < n)

{ a = v[i];

for (j = 7; j >= 0; j--)

{ if (a % 2 == 1)

stringa_byte[j] = 1;

else

stringa_byte[j] = 0;

a /= 2;

}

stringa_byte[8] = \0;

printf("%s\n",stringa_byte);

i++;

}

}

main()

{

int i;

printf("Valore da invertire in esadecimale : ");

scanf("%x",&i);

StampaMemoria((unsigned char*)&i,sizeof(int));

Dettagli
Publisher
2 pagine
17 download