# The << operator

The `<<` operator moves the bits in an int to the left without sign extension.

 255 127 127 127

Medium Grey

The table above shows a color that is 50% gray. The alpha channel is 255 (11111111), that is fully opaque while each of the red, green, and blue channels is set to 127 (01111111). This means the color is equal to the integer 11111111011111110111111101111111 or -8,421,505. However the integer value has little meaning here. It's the individual bytes that matter.

So how do you create these colors? It's simple really. Just initialize ints to the values you want for each of the four channels, use `<<` to shift them into place, and combine them with the bitwise or operator, `|`. This operator sets the bits in the result that are set in any of its operands. (A set bit is a 1 bit as opposed to a 0 bit.) For example, to create a pure blue,

``````int alpha = 255 << 24;
int red = 0 << 16;
int green = 0 << 8;
int blue = 255;
int pureBlue = alpha | red | green | blue;``````

If you prefer, you can combine these on one line. For example, to create the 50% gray

``int halfGray = (255 << 24) | (127 << 16) | (127 << 8) | 127;``

Copyright 1997, 2002, 2005 Elliotte Rusty Harold
elharo@metalab.unc.edu