In C, int occupies 4 bytes, 32 bits, and the data range is -2147483648~2147483647[-2^31~2^31-1]. The int type data is a signed integer data, and its highest bit is the sign bit (0 means positive, 1 means negative).
In C, int occupies 4 bytes, 32 bits, and the data range is -2147483648~2147483647[-2^31~2^31- 1].
Detailed answer process, taking two bytes as an example:
In C, int type data is a signed integer data, and its highest bit is the sign bit ( 0 means positive, 1 means negative).
1 byte is equivalent to 8 binary bits. In many computer systems, two's complement is usually used to represent signed numbers (complementary system).
Original code: The highest bit is the sign bit (0 means positive, 1 means negative), and the other bits represent the absolute value of the number in the usual way.
Inverse code: For a signed book, the inverse code of a positive number is the same as its original code, and the inverse code of a negative number is the bitwise inversion of all bits of the original code except the sign bit.
Complement code: The complement code of a positive number is the same as its original code, and the complement code of a negative number is its inverse code with 1 added to the lowest bit.
Two bytes, so the maximum binary original code is 0111 1111 1111 1111 = 2^15 - 1 = 32767.
The minimum is 1111 1111 1111 1111 = - (2^15 - 1) = -32767.
The expression of 0 in the original code can be divided into positive and negative [0] original = 0000 0000 0000 0000; [-0] original =1000 0000 0000 0000.
So when expressed in binary original code, the range is -32767 ~ -0 and 0 ~ 32767. Because there are two 0s, the number of different values is 2^16 - 1.
When the computer uses two's complement code to store data, the representation of 0 is unique: [0] complement = [-0] complement = 0000 0000 0000 0000
At this time, the positive number encoding No change, from 0000 0000 0000 0000 ~ 0111 1111 1111 1111 still represents 0 ~ 32767.
Negative numbers indicate that the complement code must be followed, that is, the complement code of -32767 is 1000 0000 0000 0001.
So there will be one more code in the complement code than the original code. This code is 1000 0000 0000 0000, because it is impossible for any original code to become 1000 0000 0000 0000 when converted into a complement code, so people It is specified that the one's complement encoding of 1000 0000 0000 0000 is -32768.
Conclusion: When int type data occupies two bytes, it can represent 2^16 changes. The highest bit is the sign bit, so there are 2^15 changes in positive and negative, because 0 also occupies one type, so The maximum value of positive and negative numbers is not symmetrical, that is, the value range of this int type data is -32768 ~ 32767.
Extended information:
int Usage method:
Definition method:
int i;//Define integer variable i
int i=1;//Define integer variable i and initialize it to 1
Define constant:
const int i ;//Compilation error, because constants need to be given an initial value
const int i=1;//Define constant i with a value of 1
Java defines constants:
final int i=1;//Define constant i with a value of 1
Recommended tutorial: "C Language"
The above is the detailed content of What is the value range of data int in C language?. For more information, please follow other related articles on the PHP Chinese website!