Pagina 1 di 16
Matrice [C / C++]

Inviato:
19 apr 2014, 14:58
da daniele1996
Salve a tutti, avrei la necessità di fare una tabella della verità a 3 bit (8 combinazioni) però vorrei usare meno ram possibile... e dividere bit per bit come potrei farlo?
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:05
da TardoFreak
Non ho capito cosa devi fare.
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:09
da daniele1996
Oddio scusami sono stato troppo vago
hai presente la tabella della verità:
0 0 0
0 0 1
0 1 0
1 0 0
1 0 1
1 1 0
1 1 1
ecco devo rappresentare questa cosa nella Ram
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:23
da DirtyDeeds
Ma perché avete tutti questa abitudine di scrivere C/C++ come se fossero lo stesso linguaggio o come se l'uso dell'uno o dell'altro portasse alla stessa soluzione?
C e C++ sono due linguaggi differenti. In quale linguaggio devi programmare tu?
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:27
da daniele1996
C++ però ho scritto anche C perché non so che compilatore usa Dev c++ ....
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:36
da DirtyDeeds
daniele1996 ha scritto:usa Dev c++ ....
Dev C++ è un IDE che usa Mingw come compilatore, il compilatore gcc portato sotto Windows. Il fatto che compili per C o C++ dipende da cosa gli dici tu di fare, non è che prenda lui l'iniziativa.
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:40
da daniele1996
in C++ come si potrebbe fare?
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 15:54
da DirtyDeeds
Non lo so, io conosco il C, non il C++.
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 16:31
da Shockwaver
- Codice: Seleziona tutto
#pragma pack(push, 1)
typedef struct
{
unsigned char b0 : 1;
unsigned char b1 : 1;
unsigned char b2 : 1;
} yourMatrix_t;
#pragma pack(pop)
Sia per C che per C++
1 byte, meno non puoi. I singoli bit rappresntano gli ingressi della tua tabella.
Si avvicina a ciò che ti serve?
Re: Matrice [C / C++]

Inviato:
19 apr 2014, 17:06
da Shockwaver
Se poi hai bisogno di una tabella completamente strutturata e popolata puoi fare così (sparo perché nn so che devi fare)
- Codice: Seleziona tutto
#pragma pack(push, 1)
typedef union
{
unsigned char Val : 3;
struct
{
unsigned char b0 : 1;
unsigned char b1 : 1;
unsigned char b2 : 1;
} bits;
} TableEntry_t;
typedef union
{
unsigned int Val : 24;
struct
{
unsigned char FFF : 3;
unsigned char FFT : 3;
unsigned char FTF : 3;
unsigned char FTT : 3;
unsigned char TFF : 3;
unsigned char TFT : 3;
unsigned char TTF : 3;
unsigned char TTT : 3;
} Entries;
} TruthTable_t;
#pragma pack(pop)
int main(int argc, char **argv, char **envp)
{
TruthTable_t TruthTable = {.Val = 0xFAC688}; /* Calcolato al volo, meglio controllare */
TableEntry_t Entry;
Entry.Val = TruthTable.TTF;
[...]
return EXIT_SUCCESS;
}
3 byte di allocazione, 4 di utilizzo per via dell'allineameno della RAM.