| « First Google, and now Microsoft | Coming to a grinding halt » |
Sun, Jan 21, 2007
![[Icon]](rsc/img/chain_link.gif)
I'd actually forgotten just how powerful and useful binary could be as a base: Sure, it's good for computers that are too dumb to use numbers bigger than "one" but for some types of math, it's really convenient.
Such as doubling a number: If you were asked to double 5983470658721 you'd probably have to scratch your head for a few moments and work it out longhand.
If you were asked to double the binary number 1010101010111010, you'd just add a zero to the end and you'd be done. Multiplying by eight? Add three zeros and you're done.
Clever. . .
So I wanted to generate a list of binary numbers so I could have a play. That meant I had to look up the math that converts from decimal to binary, and then implement it in C. This I have now done.
I probably should have broken it into more than one function, but it didn't seem worth it for so simple a task. And I don't like having to define the width of the binary results: I'm sure there's a way to make C calculate this for itself using a macro in the #define, but sadly I haven't learned how to do this yet, so it has to be done manually.
Ah well, I can always come back to it when I get far enough into K&R.
Follow up:
#include <stdio.h>
/* MAXNUM defines how many numbers you want to calculate binary values for */
#define MAXNUM 20
/* For neatness, all binary values should be the same width, defined here
* MAKE SURE you define a large enough number to fit all calculated values in */
#define BINWIDTH 6
int main ()
{
int i, j, c, d;
char bin[BINWIDTH];
for (i = 1; i <= MAXNUM; i++)
{
/* First, print our current value, justified to 5 digits here */
printf("%5d = ", i);
j = i;
c = 0;
/* Binaries are calculated by the remainder of dividing by two,
* then dividing the integer by two, and repeating:
* Hence thirteen, for example:
* 13 / 2 = 6 remainder 1
* 06 / 2 = 3 remainder 0
* 03 / 2 = 1 remainder 1
* 01 / 2 = 0 remainder 1
* Thus the binary value for 13 is 1101 */
while (j > 0)
{
/* This will put the binary value into the array bin[]
* in REVERSE ORDER (See above) - this is dealt with at
* a later stage in the program.
*
* "bin[c++]" populates the value of 'c' then
* increments c by one afterwards.
*
* "j%2" finds if the binary value should be 1 or 0
*
* "+'0'" turns the number into an ASCII character */
bin[c++] = ((j % 2) +'0');
j /= 2;
}
/* Before we print out the obtained binary value, we must print
* the necessary number of blank zeros first */
d = c;
while (d++ < BINWIDTH)
putchar('0');
/* The zeros now printed, we can print our binary value,
* starting at the end and working back to the start. Because
* we incremented 'c' once too many times previously, we can
* use c = 0 as our endpoint if we use --c rather than c in
* putchar */
while (c > 0)
putchar(bin[--c]);
putchar('\n');
}
return 0;
}
Creative Hedgehog
La parte A se refiere solamente a las dos novelas estudiadas. La parte A debe ser preparada después de leer la primera mitad de la novela y contestar las siguientes preguntas: ¿te está gustando la novela/película o no, y por qué? No me gusta la novela. Las personajes que puedes gustar son superficiales, o hacen [...]
06/08/10 - SPN3730 diario: Pascual Duarte parte A
Hari's corner
Why being bi-lingual has its advantages
10/08/10 - Being bi-lingual has its advantages
Place of Stuff
Isn't this exciting? We're out of the tedium of Genesis (world created, man falls, many people live and die. Oh, and attempted forced buggery and a spot of incest). We're into Exodus now; the Bible has got going, that tricky first chapter is out of the way and the real action can start! When the [...]
03/08/10 - The Bible ? On The Waterfront
Advice From a Single Girl
I was giddy and hopeful when I first met Cary and spent a brief amount of time with him.
The week after that I was happily high on the idea of what could be, the possibility of getting to know someone interesting and intriguing, the wide open potential of what could be.
And I wanted to tell my friends all about him and what had, and hadn't happened, but I also wanted to keep it to myself, sealed safely in the happy bubble that was floating inside me. So I talked to some close friends about him, told them he lived in Vancouver and they, meaning well, told me quite firmly that they would not allow me to go through another long distance relationship. That I shouldn't even consider it.
My bubble had been burst.
I was completely deflated. Hurt. Let down.
I talked to C-Dawg, a sad tinge to the story now that I'd been told it could. . . should never work out.
"Vancouver?" she said, her voice somewhere between amused and incredulous. "That's not long distance! Get serious. Go for it."
And I let my bubble maybe start to re-inflate. Cautiously. Maybe just a little.
Then I talked to my friend about Cary. She said good things.
Maybe there was reason to be hopefully optimistic. Maybe it was ok to be a little girly and dreamy over what-ifs.
I went for a walk with S. We had life to catch up on.
Life including Cary and the story that still makes me smile.
She encouraged me to get his email, which I did, and then she went home and tried to find out what she could about him.
See, I'm not on Facebook. (No, really.) But S is, and in the small world way that Facebook seems to work, she found that Cary and she had a mutual friend and so she looked him up for me. (The modern background check.)
You can sometimes tell a lot about a person by what they put on their Facebook, she cautioned me. Sometimes.
How old is he?
Me: I don't know.
Is he a smoker?
Me: Um, I don't know? (God, I hope not)
Could he maybe be a little bit immature?
Me: I don't know. I suppose.
Well, he seems like a good guy. Cute. Interesting. I'd say he was my type, you know. (We laugh, we already know we share similar excellent taste in men.)
"I say go for it." She says, "just be aware that he's human. Not perfect."
I don't want to hear it.
Don't want to know the reality of him.
Find myself running away from all the what might have been's towards it'll never work what what I thinking's.
It's all or nothing. Perfect or awful. It'll work or it'll be a disaster.
And I realize that my bubble, the one that's been growing and floating inside me will burst on its own, without anyone's help if I get too far into imagining just how great Cary is, how great we'd be together, how perfectly perfect it all will be.
I'm Icarus. My friends don't want me flying too close to the sun.
But I like the feeling.
I like the soaring giddiness of how utterly fantastic this thing I've found will be.
Every single time I meet someone I like that feeling.
And I ride it higher and higher until I'm flapping my bare arms, feathers fallen into the sea and the crash is coming, the relationship splintering and I'm left staring at the brokenness wondering how on earth I could have been so wrong again.
The extremes are familiar. Addictive perhaps.
But I'm trying to learn to ride in the middle.
Safer. A shorter distance to fall.
A smaller bubble to burst.
Expectations that can be met and exceeded.
A safe, yet joyful and giddy flight. Wings intact.
03/09/10 - Icarus
Nation
  This was possibly the most ridiculous show I have seen in a long time and I can get Sky 1 I know ridiculous. It could be summed up in three sentences Do you know what's in your cereal? Want to? Read the label. Instead it went on for a hour about how evil the [...]
27/10/09 - Dispatches ? do you know what?s in your breakfast? (warning...
Blogroll generated by MagpieRSS
![[Links]](http://geekblog.oneandoneis2.org/skins/112/rsc/img/chain_link.gif)
Strange, how the only people who ever seem to complain that Linux sucks or doesn't work well are people who don't like using the CLI...
03/09/10
Dominic tried to explain how circular references can cause a memory leak to a colleague this morning, and got told off for not working. Apparently, the analogy of a madman shooting anybody who isn't being pointed at by somebody else was NOT the boss-safe way to go..
01/09/10
![]()
I last listened to:
The Offspring - She's Got Issues
Most recent photo:
Submersible houseboat