View Full Version : [C++] dichiarare una variabile binaria
Albitexm
09-03-2010, 23:37
In C++ posso assegnare a una variabile un valore binario?
Io leggo tipi di dati: short,int,long,char,double,bool. Ma non trovo il tipo di dato binario. Se io ad esempio volessi che la variabile A sia = 00100001 cosa dovrei usare? Esiste il tipo di dato binario in C++ ?
Ora io voglio scrivere un elenco di byte, e poi eseguire l'AND tra loro. Io ho trovato il tipo _int64 ma si riferisce a un'intero decimale di 64bit. Ma allora dovrei prima di scrivere il programma convertire il binario in decimale, poi fare le operazioni booleane che m'interessano e poi convertile di nuovo in binario e il risultato quando lo uso convertirlo ancora in quel che mi serve? Io vorrei allocare dei dati di tipo binario e eseguire operazioni booleane tra loro. Il risultato binario: o manipolarlo con altre operazioni o convertirlo per il seguito del programma.
Beh in C/C++ tutti i tipi sono implicitamente tipi binari... quindi puoi trattarli tutti come sequenze di bits lunghe sizeof( tipo ) * 8.
Un elenco di bytes credo sia meglio realizzarlo con un array di char.
Poi, dato ogni singolo byte/char, puoi settare i bits individuali con gli operatori binari.
Black imp
10-03-2010, 01:25
usa un unsigned char e lavora in esadecimale.
unsigned char valueArray[2] = {0x21, 0x01};
unsigned char finalValue = valueArray[0];
for (unsigned int i = 1; i < 2; i++)
{
finalValue &= valueArray[i];
}
tomminno
10-03-2010, 08:41
In C++ posso assegnare a una variabile un valore binario?
Io leggo tipi di dati: short,int,long,char,double,bool. Ma non trovo il tipo di dato binario. Se io ad esempio volessi che la variabile A sia = 00100001 cosa dovrei usare? Esiste il tipo di dato binario in C++ ?
Esiste il contenitore bitset.
Ma allora dovrei prima di scrivere il programma convertire il binario in decimale, poi fare le operazioni booleane che m'interessano e poi convertile di nuovo in binario e il risultato quando lo uso convertirlo ancora in quel che mi serve? esattamente: devi fare questo, e nel farlo ti accorgerai (senza offesa :D) di quanto sei fesso, perché per la conversione tra basi non dovrai fare assolutamente nulla :asd:
per le operazioni booleane bit a bit usa gli operatori bitwise: &, |, ^, ~
Se io ad esempio volessi che la variabile A sia = 00100001 cosa dovrei usare? A = 33;
oppure
A = 0x21;
Albitexm
10-03-2010, 22:03
esattamente: devi fare questo, e nel farlo ti accorgerai (senza offesa :D) di quanto sei fesso, perché per la conversione tra basi non dovrai fare assolutamente nulla :asd:
per le operazioni booleane bit a bit usa gli operatori bitwise: &, |, ^, ~
ma ancora un dubbio: differenza tra opraatori bitwise e operatori logici generici. Ovvero l'operatore logico & io l'ho usato per scrivere espressioni tipo:
if condizione1 vera & condizione2 vera then .. mentre noi parliamo di eseguire la AND "matematica" tra due variabili. Il simbolo è sempre & ?
Albitexm
10-03-2010, 22:25
Esiste il contenitore bitset.
Grazie per l'indicazione. Ho visto sull'Help del compilatore le decine di voci relative a bitarray, bitset array ecc.. Sono giunto alla conclusione che è più semplice lavorare con degli array di tipo char (come sostiene Tommo) anche se ovviamente la resa sarà diversa. Si avrà una maggiore semplicità di stesura del codice a scapito delle prestazioni.
tomminno
10-03-2010, 23:02
ma ancora un dubbio: differenza tra opraatori bitwise e operatori logici generici. Ovvero l'operatore logico & io l'ho usato per scrivere espressioni tipo:
if condizione1 vera & condizione2 vera then .. mentre noi parliamo di eseguire la AND "matematica" tra due variabili. Il simbolo è sempre & ?
l'operatore And logico in tutti i linguaggi C-like è &&, l'operatore And sui singoli bit è &.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.