Iguana’s are honestly terrifying…[video]
Giorno: 2 marzo 2016
cose che ho imparato:
1) wow! si può programmare di tutto con tutto! ma che spreco. oggi ho visto per la prima volta cosa succede con array a migliaia di indici e confesso che spero di non averci molto a che fare!
2) finalmente apprezzo la specializzazione delle variabili del Java e del C++, sino ad oggi ne vedevo solo l’impraticità, ma usare un int di 32 bit (cioè 2 elevato 32) per immagazzinare un numero tra 0 e 10 per un migliaio di volte mi disgusta perché odio gli sprechi
3) immagino che i videogiochi di venti anni fa fossero così pixellati e privi di colori perché per ridurre al minimo lo spreco di memoria dovevano usare il numero minimo di bit per immagazzinare informazione. 1 byte (tipo char del C++) contiene 256 bit, e se consideriamo 16 colori, ogni valore di un char può indicare un elemento di una matrice 4×4 (un modo per implementarlo è questo: (c % 16) restituisce il valore della cella, (c % 16) % 4 il valore della colonna, (c % 16) / 4 il valore della riga, (c / 16) il colore dell’elemento c). che bella l’efficienza!
4) sono felice di trovare punti di forza e di bellezza in linguaggi diversi. w il Python! w il C++
5) persino il codice un videogioco rudimentale richiede una certa riflessioneMi sono perso alla terza riga. Sono troppo vecchio!
Nella programmazione embedded in C, questi ed altri trucchetti per risparmiare memoria si usano ancora oggi. Ad esempio le variabili bit a bit.
Se devi avere 16 bool, invece di usare 16 variabili di tipo bool (che occupano 1 byte l’una, 16 byte in totale), puoi fare un’unica variabile short (da 2 byte), e 16 define per i 16 bit dello short:
short var;
#define VAR_1 0x1
#define VAR_2 0x2
#define VAR_3 0x4
#define VAR_4 0x8
#define VAR_5 0x10
#define VAR_6 0x20
#define VAR_7 0x40
#define VAR_8 0x80
#define VAR_9 0x100
#define VAR_10 0x200
#define VAR_11 0x400
#define VAR_12 0x800
#define VAR_13 0x1000
#define VAR_14 0x2000
#define VAR_15 0x4000
#define VAR_16 0x8000
A questo punto, per mettere a true o a false le variabili, alzi o si abbassi i singoli bit:
var |= VAR_1;
var &= ~VAR_1;
Se invece del C usi il C++, puoi anche usare le struct bit a bit:
struct var {
unsigned short var_1:1;
unsigned short var_2:1;
unsigned short var_3:1;
unsigned short var_4:1;
unsigned short var_5:1;
unsigned short var_6:1;
unsigned short var_7:1;
unsigned short var_8:1;
unsigned short var_9:1;
unsigned short var_10:1;
unsigned short var_11:1;
unsigned short var_12:1;
unsigned short var_13:1;
unsigned short var_14:1;
unsigned short var_15:1;
unsigned short var_16:1;
};
In questo modo dici al compilatore che i singoli campi della struct, pur essendo chiamati short, possono assumere solo il valore 0 o 1. Il compilatore ottimizzerá la struct facendola pesare 2 byte, invece dei 16 che avresti usato usando i bool.
Fiat Kung Fu Panda – Infomotori
Cos’é il genio ? Se la fanno a metano la piglio.







