Я думаю, вы путаете тип данных Integer с его текстовым представлением.
int x = 3;
- это число три, независимо от представления (двоичное, десятичное, шестнадцатеричное и т. Д.). Когда вы анализируете двоичное текстовое представление целого числа обратно в целое, вы получаете другое число.Каркас предполагает, что вы анализируете число, представленное в десятичной основе, и выдает соответствующее целое число.Вы можете попробовать
int x = 1600;
string s = Convert.ToString(x, 2);
int b = int.Parse(s);
, и это вызовет исключение, потому что двоичное представление 1600, интерпретируемое как десятичное, слишком велико, чтобы поместиться в целое число