Steve Litt wrote: > On Fri, 24 Jun 2016 09:19:40 +0200 > Edward Bartolo <edb...@gmail.com> wrote: > > > Bitwise Operators: > > > > Pg 63: > > /* getbits: get n bits from position p */ > > > > unigned int getbits(unsigned int x, int p, int n) > > { > > return (x >> (p + 1 - n)) & ~(~0 << n); > > } > > Stuff like this is the reason I soon abandoned K&R as a learning tool, > and used it only to determine the official behavior of C. > > Bit stuffing, sliding and masking were a tool of the assembly programmer > back when your RAM could be counted in four digits and your processor > had little power. Using x, p and n instead of container_int, > bit_position and bits_to_consider was relevant when computers were so > anemic that shorter variable names made for faster compiles. And also, > long variable names are difficult to format in a print book. > > In this day and age (and as a matter of fact since the early 1990's), > packing bits into ints is usually premature optimization. It's usually > better to malloc() 1024 ints whose values will be either 0 or 1 than > to malloc() 64 its whose values go from 0 to 65535, and access > individual bits. If RAM or performance later becomes an issue, THAT'S > the time to bit-stuff and bit-manipulate. > > When K&R originally wrote their book in 1978, there were plenty of > computers running magnetic core memory, and the language of system > programmers was assembler. And early C didn't optimize that well. So of > course they wrote their C with assembler idioms. > > I'd personally de-prioritize the bit arithmetic stuff. You can learn it > at any time. The other thing I'd de-prioritize is the question mark > operator: It's just (sometimes confusing) shorthand for what > if/else if/else can do. > > Save your brainpower for pointers to functions. That's actually > massively useful, and extremely difficult.
If it's about saving brainpower, a garbage-collected scripting language is indicated. But this is a snark. I looked at K&R in 1986, when I got my first PC clone, and soon gave up in confusion. Joel > SteveT > > Steve Litt > June 2016 featured book: Troubleshooting: Why Bother? > http://www.troubleshooters.com/twb > _______________________________________________ > Dng mailing list > Dng@lists.dyne.org > https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng -- Joel Roth _______________________________________________ Dng mailing list Dng@lists.dyne.org https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng