Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Invertire i bit di una char
Forum - C/C++ - Invertire i bit di una char

Pagine: [ 1 2 3 ] Precedente | Prossimo
Avatar
Gioviok (Normal User)
Newbie


Messaggi: 7
Iscritto: 26/03/2016

Segnala al moderatore
Postato alle 12:31
Sabato, 23/07/2016
Salve, stavo provando a scrivere una funzione che , dato un char, inverta i suoi bit(invertendo le posizioni, il primo diventa ultimo, l'ultimo primo...) Ma non so proprio come lavorare sui bit della char: in pratica la funzione dovrebbe essere così:
Codice sorgente - presumibilmente VB.NET

  1. char invert(char from){
  2. char to = from;
  3. //invertire i bit
  4. return to;
  5. }


Ma non so proprio da dove cominciare.
Come fare?
Grazie in anticipo! :hail: :hail:
EDIT:
dice presumibilmente vb.net, ma è c++

Ultima modifica effettuata da Gioviok il 23/07/2016 alle 19:57


Mmm...una struttura nuda...
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 13:32
Sabato, 23/07/2016
A parte il titolo in cui parli di byte (penso per errore), questa cosa a che ti serve? E' un esercizio scolastico o cosa?

Ultima modifica effettuata da nessuno il 23/07/2016 alle 13:33


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1451
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 17:23
Sabato, 23/07/2016
Parti da t = 0, t = t OR ((f AND (1 << i)) << x) con x = 7 - i per i che va da 0 a 7.

Questo è l'algoritmo per lo scambio di bit e va bene per tutti i linguaggi di programmazione.

f è from e t è to.

PM Quote
Avatar
Venerba Mirco (Member)
Rookie


Messaggi: 29
Iscritto: 01/08/2016

Segnala al moderatore
Postato alle 13:58
Martedì, 02/08/2016
per risolvere questo problema di inversione potresti usare un casting, poi abbini il valore restituito ad un array con una cifra per ogni posizione e il gioco è fatto


Venerba Mirco
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 15:13
Martedì, 02/08/2016
Testo quotato

Postato originariamente da Venerba Mirco:

per risolvere questo problema di inversione potresti usare un casting, poi abbini il valore restituito ad un array con una cifra per ogni posizione e il gioco è fatto



Non mi è chiaro quello che dici ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Venerba Mirco (Member)
Rookie


Messaggi: 29
Iscritto: 01/08/2016

Segnala al moderatore
Postato alle 18:30
Martedì, 02/08/2016
questo codice lo butto giù adesso al volo

Codice sorgente - presumibilmente C#

  1. //abbino la lettera alla variabile
  2. char variabilecarattere='a';
  3. //abbino il codice ascii ad una variabile numerica
  4. int variabilenumerica=(int)variabilecarattere;
  5. //conto quante cifre ha il numero
  6. int numerocifre=0;
  7. while(pow(10, numerocifre)<=variabilenumerica){
  8.       ++variabilenumerica;
  9. }
  10. //creo un array delle cifre necessarie
  11. //e qua scompongo il numero in unita decine e centinaia.
  12. int array[variabilenumerica];



questo codice lo ho buttato qua adesso, è da rielaborarlo meglio. spero ti sia utile come bozza


Venerba Mirco
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5460
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 19:59
Martedì, 02/08/2016
Ma che c' entra questo codice con il problema del thread?

Tu hai capito cosa si chiedeva?


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
Venerba Mirco (Member)
Rookie


Messaggi: 29
Iscritto: 01/08/2016

Segnala al moderatore
Postato alle 20:34
Martedì, 02/08/2016
si, ho capito cosa chiede, io pensavo di trovare il codice ascii, convertirlo in binario e poi scambiare i bit


Venerba Mirco
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1451
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 20:44
Martedì, 02/08/2016
Quella cosa non ha alcun senso.

Si compilerà (forse) ma non farà ciò che vuoi.

Inoltre quando hai un carattere non devi "convertirlo" quel carattere è già ciò che vuoi.

Se prendi il debugger e imposti la visualizzazione numerica di variabilecarattere ottieni il codice ascii esteso che identifica il carattere 'a'.

fare int variabilenumerica=(int)variabilecarattere; ti fa solo sprecare 24 bit per copiare 8 bit da una parte all'altra.

while(pow(10, numerocifre)<=variabilenumerica) Ovvero? 10^0 fa 1, come ogni numero diverso da 0.

ovvero eseguirai variabilenumerica++ fino all'overflow e oltre, ovvero fino a fargli raggiungere il valore MIN_INT.

int array[variabilenumerica]; ORRORE:
1) la dichiarazione di un array di dimensione variabile è fuori standard e non più supportata (per ottime ragioni)
2) anche se fosse corretto un array di dimensione zero negativa non può esistere.

Pura follia!

Ultima modifica effettuata da TheDarkJuster il 02/08/2016 alle 20:44
PM Quote
Pagine: [ 1 2 3 ] Precedente | Prossimo