# 2nd Challenge: Better way than brute force?

#1

For the second challenge (“How much range?”) I basically brute forced the answer and then cleaned up my code (below).

I suppose I could’ve solved this with math by applying some knowledge I’ve gleaned, i.e. 2 bytes = 16 bits, so:

• signed short: 1 bit for the sign leaves 2^15 - 1 as the largest number (-1 because we’re counting zero), -1 * 2^15 as the “smallest”
• unsigned short: no bit for the sign leaves 2^16 - 1 as the largest number.

While my math checks out with the answers I got from my code, I’m still struggling to relate this challenge to the chapter. I feel like my answer was supposed to involve pointers or addresses in some way, but I can’t figure out how pointers apply here.

``````    // How Much Range?
// What is the smallest number a short can store? What is the largest?
// This code suggests 32767 and -32768, respectively
printf("Challenge: What's the largest and smallest short?\n");
short x = 32766;
for (int count = 32766; count < 32769; count++) {
printf("%d: %d\n", count, x);
x++;
}

// What is the largest number an unsigned short can store?
// This code suggests 65535
printf("Challenge: What's the largest unsigned short?\n");
unsigned short y = 65534;
for (int count = 65534; count < 65537; count++) {
printf("%d: %d\n", count, y);
y++;
}``````

#2

That challenge does not ask you to write a program. It’s just a question for you to solve on paper or see the reference.

en.wikipedia.org/wiki/Integer_%2 … rt_integer