Byte không phải có giá trị 255 mà nó sẽ có 2^8 = 256 giá trị.
Nó là 8 bit nên nó có 2^8 giá trị và tính cả con 0 vào nên nó có giới bạn từ 0->255.
Nếu là 16 bit thì tương tự có 2^16 =65536 giá trị và giới hạn từ 0->65535.
Nếu là 32 bit thì có 2^32 ~ 4 tỷ giá trị. Bạn đã biết vì sao chip 32 bit chỉ chận được ~ 4G RAM chưa :))
1 bit có thể có 2 giá trị là 0 hoặc 1.
Tuy nhiên trong lập trình nếu đi kèm với một số từ khai báo dấu như signed, unsigned thì giới hạn giá trị sẽ khác nhau.
signed char (8 bit): 0 ~ 255.
unsigned char (8 bit): -127 ~ 127.
signed int (16 bit) : 0 ~ 65535.
unsigned int (16 bit) : -32767 ~ 32767.
signed int (32bit) : 0 ~ 4 tỷ.
unsigned int (32 bit) -2 tỷ ~ 2 tỷ.