c# int类型计算超过最大值,是怎么处理的?

我在程序里运行如下代码


int  a= 255;
//二进制是 1111-1111

a = a * 256; 
//a=65280
//二进制是 1111-1111-0000-0000

a = a * 256;
 //a=16,711,680
//二进制是 1111-1111-0000-0000-0000-0000

a = a * 256; 
//a= -16777216
//二进制是 1111-1111-0000-0000-0000-0000-0000-0000

请问第4步 a的值超过32位之后,C#是如何算出 -16777216 这个值的?

用数组存储进行大数存储