The program is a bigger program but the summary of program is

Code:
int main(void)
{
signed int data1;
data1 = 32785;
return 0;
}
I know that data1 is signed value and hence the maximum value is 32767. When i store 32785 will the value of data1 be 32767-32785 = -18? But the correct value is -32751. How was it arrived? Please help.