On Monday, June 05, 2006 12:58, EA Durbin wrote:
Okay what am i misunderstanding?, explain it to me as its imperative I learn, and I'd love to learn.
%u is an unsigned integer which is 0 to +32,767.
%i is a signed integer 32,767 to +32,767.
If the sequence number is always going to be a positive number why should we allot it the extra 32,767 value range?
Not quite...
neil@t40-n ~ $ cat >tmp.c <<EOF #include <stdint.h> #include <stdio.h>
int main(void) { uint16_t i = -1;
printf("%u\n", i);
return 0; } EOF neil@t40-n ~ $ gcc tmp.c neil@t40-n ~ $ ./a.out 65535 neil@t40-n ~ $
if you inspect the memory that's at i, you'll find it's 0xffff. If you read it as signed, you interpret it using two's complement[1], if you read it as unsigned, you still use all the bits, but there's no sign bit*.
[1] http://en.wikipedia.org/wiki/Two%27s_complement
* Strictly speaking it's not a sign bit, but is frequently referred to as one anyways.
- Neil