what does this mean


1
2
int i , j
c = ((((i&0x8)==0)^((j&0x8))==0))*255

What does it mean ???
Last edited on
Looks like some hexadecimal adresses and pointer referencing.

But then again, I may just try to sound smart and have no actual idea of what i'm talking about.
Those could be bitwise operators, or maybe I just need a big cup of coffee as those &s actually reference operators.
http://cplusplus.com/doc/tutorial/operators/
http://cplusplus.com/doc/tutorial/pointers/

Though if I had to choose one, it would be the bitwise operators.

-Albatross
Last edited on
As Albatross pointed out, it is doing a few bitwise operations.

Consider 0x8 in binary: 1000b. (i&0x8) reads, "If the 4th bit of i is set". Etc.

I didn't work out what it really does but I'm [wildly] guessing this makes some kind of contrasting color value for something...
Thanks for everyone, so c is the type of integer i guess if the 4th bit of i or j = 1 or both of them = 1 , it perhaps refer c to 255 otherwise to 0 , is that right ???
Last edited on
No.

If the 4th bit of i is not set in either i or j (but not both), then c is 255, else 0.

Frankly, I'm not 100% sure why anyone would want to do this, but...

-Albatross
thanks i have already understood operator ^ is bitwise XOR ( ^ ) not OR (|). this code above is used for working with pixel , thanks you again
I still don't get what it's for. Working with pixels... that could mean anything.

-Albatross
Last edited on
You try reading this code, It is the openGL and cheakImage is an array that hold data for initially drawing image in lower left corner of the window. Frankly i haven't understood yet what it means in enough
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glut.h>
#include <stdlib.h>
#include <stdio.h>
#define checkImageWidth 64
#define checkImageHeight 64
GLubyte checkImage[checkImageHeight][checkImageWidth][3];
static GLdouble zoomFactor = 1.0;
static GLint height;
void makeCheckImage(void)
{
int i, j, c;
for (i = 0; i < checkImageHeight; i++) {
for (j = 0; j < checkImageWidth; j++) {
c = ((((i&0x8)==0)^((j&0x8))==0))*255;
checkImage[i][j][0] = (GLubyte) c;
checkImage[i][j][1] = (GLubyte) c;
checkImage[i][j][2] = (GLubyte) c;
}
}
}
void init(void)
{
glClearColor (0.0, 0.0, 0.0, 0.0);
glShadeModel(GL_FLAT);
makeCheckImage();
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT);
glRasterPos2i(0, 0);
glDrawPixels(checkImageWidth, checkImageHeight, GL_RGB,
GL_UNSIGNED_BYTE, checkImage);
glFlush();
}
void reshape(int w, int h)
{
glViewport(0, 0, (GLsizei) w, (GLsizei) h);
height = (GLint) h;
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0.0, (GLdouble) w, 0.0, (GLdouble) h);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void motion(int x, int y)
{
static GLint screeny;
screeny = height - (GLint) y;
glRasterPos2i (x, screeny);
glPixelZoom (zoomFactor, zoomFactor);
glCopyPixels (0, 0, checkImageWidth, checkImageHeight,
GL_COLOR);
glPixelZoom (1.0, 1.0);
glFlush ();
}
void keyboard(unsigned char key, int x, int y)
{
switch (key) {
case 'r':
case 'R':
zoomFactor = 1.0;
glutPostRedisplay();
printf ("zoomFactor reset to 1.0\n");
break;
case 'z':
zoomFactor += 0.5;
if (zoomFactor >= 3.0)
zoomFactor = 3.0;
printf ("zoomFactor is now %4.1f\n", zoomFactor);
break;
case 'Z':
zoomFactor -= 0.5;
if (zoomFactor <= 0.5)
zoomFactor = 0.5;
printf ("zoomFactor is now %4.1f\n", zoomFactor);
break;
case 27:
exit(0);
break;
default:
break;
}
}
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(250, 250);
glutInitWindowPosition(100, 100);
glutCreateWindow(argv[0]);
init();
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutKeyboardFunc(keyboard);
glutMotionFunc(motion);
glutMainLoop();
return 0;
}
Last edited on
Topic archived. No new replies allowed.