Thanks for the info, I knew << method is implemented by different classes for different tasks. I really need info on bitwise operator. If you look at Ruby Quiz book (Page 240), you see: @num_sources = sources.size @num_hashes = 1 << @num_sources I think << here is doing bit manipulation, which I do not get! Thanks guys, On 5/12/07, John Joyce <dangerwillrobinsondanger / gmail.com> wrote: > It's not what you think. Not always. > It's not a bit shift operator all the time. > << > is a bit different in different contexts in Ruby. > You can look it up with the tool ri > ri '<<' > That will give you a list of different classes that use << > In the Array class for example, << pushes an object on the right side > onto the end of the array on the left side. > an_array << object_to_push_onto_end > > In the class BigNum and the class FixNum, << is a left shift bit > shift operator. > Bit shifting isn't often done in Ruby, but certainly possible. It has > various uses and is often used for speed tricks in C, because bit > shifting is some times faster than some math operations. It > litterally takes a binary number and moves all the 1's and zeros to > the left. (to the right with >>) > > With class IO (and its subclasses, such as File) > << writes the object on the right to the IO object on the left. It > also converts the object on the right to a string first. > > Class String uses << to append the object on the right to the string > object on the left. Conversion to string first will happen. > > This may actually be a weakness of Ruby, maybe not. (could be a > contentious issue) but much like in natural languages, context makes > it pretty clear that something different is happening. > > If you really want a tutorial on how bit-shifting works, there should > be a few good ones out there on the web, or maybe somebody else here > will do it. I always hated bit-shifting and bit-filters. (Dan > Gookin's, C All-in-one Desk Reference for Dummies has a good bitwise > operator chapter.) > >