Friday, March 28, 2008

Progress

Ecology, Art, and Technology | Environmental Risk Assessment Rover - AT Version 1.0: "Why has modernity, which was supposed to create a sense of security, produced more anxiety and threats than ever? Can scientific data and research help us understand the “riskiness” of contemporary life?"

Good question. I bet old Ned Ludd would have a theory on it.

Friday, March 7, 2008

Computer Jokes

Const-Correctness in C: "In C, you merely shoot yourself in the foot.

In C++, you accidentally create a dozen instances of yourself and shoot them all in the foot. Providing emergency medical care is impossible, because you can't tell which are bitwise copies and which are just pointing at others and saying, 'That's me, over there.'"

Haha.. I thought that was funny. I'm a nerd.

Generating N contiguous bits

So say you want to generate a bitmap that is N contiguous bits, without using some kind
of crazy inefficient for loop. Here's a way that I figured out how to do that (not to say I invented it or anything, but I couldn't find it when I searched for it).
Obviously this has compiler and machine dependencies, and probably doesn't work on the Ides of March, so use at your own risk.

In this example, I want to generate 6 bits of 1's (so 0b111111):

#include <stdio.h>
main(){
unsigned short a;
short b;
int n = 6;
b = 1 << n;
a = (unsigned short) -b; // extend the left bits
printf("a is %hx\n", a);
printf("~a is %hx\n", ~a);
a = ~a; // now b should be 0b111111
}


That's probably like 4 or 5 operations, so for 6 bits it probably sucks. But if you use 64 bit long longs and want to generate 47 one's then it will save some cycles.

Isn't playing with bits fun?