In most
barcodes used today each digit is
encoded as 7 bits. The
coding used isn't the regular
binary representation of the
digit being encoded. The left and right halves of the code use entirely different coding schemes, too, which allows the scanning machine to determine whether the
product being scanned is
upside down or not. The codes used are as follows (go and find a tin of beans or something if you don't believe me):
DIGIT LEFT SIDE RIGHT SIDE
0 0001101 1110010
1 0011001 1100110
2 0010011 1101100
3 0111101 1000010
4 0100011 1011100
5 0110001 1001110
6 0101111 1010000
7 0111011 1000100
8 0110111 1001000
9 0001011 1110100
The code on the left and right is "101" (or 5, if you like) and the code in the centre is "01010" (or 10).
It is hard to see how people read it as 666. To say "most bar codes have a double bar in those spaces. That is a 6" is misleading. The binary representation of 6 is "110" which would be a single fat bar followed by a space. What we actually see in the centre of a barcode is two twin bars with spaces before, after and between them, or "01010".