Jean-Jacques BOURDIN
Jean-Jacques.Bourdin NOSPAM @ ai.univ-paris8.fr
(enlever le NO Spam)
ou jj chez up8 . edu
Nous nommons champ de bits une structure où tous les champs sont des entiers non signées et sont accompagnés du nombre de bits qu’ils utilisent.
Nous montrons également l’effet lié aux décalages. Voici un exemple avec des effets de dépassement :
#include <stdio.h> struct champs { unsigned int a: 1; unsigned int b: 1; unsigned int c: 1; } ; typedef struct champs champs; typedef unsigned int uint; struct champ2 { uint x: 1; } ; typedef struct champ2 champ2; void fct () { champs c; champ2 f; c.a = 1; c.b = 2; c.c = 3; f.x = 1; printf("%2u %2u %2u %2d\n\n\n", c.a, c.b, c.c, f.x); } int oups (int a, int b) { int c; c = 0; while (a) { if (a & 0x01) c += b; b <<= 1; a >>= 1; } return c; } int main () { int i, j; fct (); printf(" 1 2 3 4 5 6 7 8 9\n"); for (i = 2; i < 10; i++) { printf(" %2d ", i); for (j = 1; j < 10; j++) printf("%3d ", oups(i,j)); printf("\n"); } } white.home: gcc champs.c champs.c:21:7: warning: implicit truncation from ’int’ to bit-field changes value from 2 to 0 [-Wbitfield-constant-conversion] c.b = 2; ^ ~ champs.c:22:7: warning: implicit truncation from ’int’ to bit-field changes value from 3 to 1 [-Wbitfield-constant-conversion] c.c = 3; ^ ~ 2 warnings generated. white.home: a.out 1 0 1 1 1 2 3 4 5 6 7 8 9 2 2 4 6 8 10 12 14 16 18 3 3 6 9 12 15 18 21 24 27 4 4 8 12 16 20 24 28 32 36 5 5 10 15 20 25 30 35 40 45 6 6 12 18 24 30 36 42 48 54 7 7 14 21 28 35 42 49 56 63 8 8 16 24 32 40 48 56 64 72 9 9 18 27 36 45 54 63 72 81 white.home: |
void Mouse(int button, int state, int x, int y){ switch(button){ case GLUT_LEFT_BUTTON: break; case GLUT_MIDDLE_BUTTON: break; case GLUT_RIGHT_BUTTON: break; } glutPostRedisplay(); } |
int main(int argc, char **argv) { if (argc<2) { fprintf(stderr, "Usage : palette nom_de_fichier\n"); exit(0); } glutInit(&argc, argv); glutInitDisplayMode(GLUT_RGB | GLUT_SINGLE); glutInitWindowSize(640,480); glutInitWindowPosition(0, 0); glutCreateWindow("VPUP8"); Init(argv[1]); glutCreateMenu(menuFunc); glutAddMenuEntry("Informations", 0); glutAddMenuEntry("Ouvrir", 3); glutAddMenuEntry("Sauver", 4); glutAddMenuEntry("Noir et Blanc", 6); glutAddMenuEntry("Quit", 5); glutAttachMenu(GLUT_LEFT_BUTTON); glutDisplayFunc(Display); glutReshapeFunc(Reshape); glutKeyboardFunc(Keyboard); glutMouseFunc(Mouse); glutMainLoop(); return 1; } |
Vous trouverez également sur la page de M. Belhadj des exemples simples d’utilisation de la SDL et de GL4Dummies. Notamment son cours de programmation graphique 2D.
Il vous faut également des images en ppm, en voici quelques unes.En Informatique Graphique il faut commencer par séparer les composantes bleue rouge et verte (il y a des chances que les rouges de deux pixels voisins soient proches, par exemple).
Dernière mise à jour : 28/10/2021 (15h)