Hide minor edits - Show changes to markup
Unsigned ints (unsigned integers) are the same as ints in that they store a 2 byte value. Instead of storing negative numbers however they only store positive values, yielding a useful range of 0 to 65,535 (2^16) - 1).
On the Uno and other ATMEGA based boards, unsigned ints (unsigned integers) are the same as ints in that they store a 2 byte value. Instead of storing negative numbers however they only store positive values, yielding a useful range of 0 to 65,535 (2^16) - 1).
The Due stores a 4 byte (32-bit) value, ranging from 0 to 4,294,967,295 (2^32 - 1).
int ledPin = 13;
unsigned int ledPin = 13;
int var = val;
unsigned int var = val;
The difference lies in the way the highest bit, sometimes refered to as the "sign" bit is interpreted. In the Arduino int type (which is signed), if the high bit is a "1", the number is interpreted as a negative number, and the other 15 bits are interpreted with 2's complement math.
The difference between unsigned ints and (signed) ints, lies in the way the highest bit, sometimes refered to as the "sign" bit, is interpreted. In the Arduino int type (which is signed), if the high bit is a "1", the number is interpreted as a negative number, and the other 15 bits are interpreted with 2's complement math.
The difference lies in the way the highest bit, sometimes refered to as the "sign" bit is interpreted. In the Arduino int type, which is signed, if the high bit is a "1", the number is interpreted as a negative number and the other 15 bits are interpreted with 2's complement math.
The difference lies in the way the highest bit, sometimes refered to as the "sign" bit is interpreted. In the Arduino int type (which is signed), if the high bit is a "1", the number is interpreted as a negative number, and the other 15 bits are interpreted with 2's complement math.
The difference lies in the way the highest bit, sometimes refered to as the "sign" bit is interpreted. In the Arduino int type, if the high bit is a "1", the number is interpreted as a negative number and the other 15 bits are interpreted with 2's complement math.
The difference lies in the way the highest bit, sometimes refered to as the "sign" bit is interpreted. In the Arduino int type, which is signed, if the high bit is a "1", the number is interpreted as a negative number and the other 15 bits are interpreted with 2's complement math.
x = 65535;
When variables are made to exceed their maximum capacity they "roll over" back to their minimum capacitiy, note that this happens in both directions
[@unsigned int x x = 0; x = x - 1; // x now contains 65535 - rolls over x = 65535; x = x + 1; // x now contains 0
[@ unsigned int x
x = 0; x = x - 1; // x now contains 65535 - rolls over in neg direction
x = 65535; x = x + 1; // x now contains 0 - rolls over
@]
Unsigned ints (unsigned integers) are the same as ints in that they store a 2 byte value. Instead of storing negative numbers however they only store positive values, yielding a useful range of 0 to 65,535 (2^16) - 1).
The difference lies in the way the highest bit, sometimes refered to as the "sign" bit is interpreted. In the Arduino int type, if the high bit is a "1", the number is interpreted as a negative number and the other 15 bits are interpreted with 2's complement math.
int ledPin = 13;
int var = val;
[@unsigned int x x = 0; x = x - 1; // x now contains 65535 - rolls over x = 65535; x = x + 1; // x now contains 0