Использование 0 в начале числа при объявлении его означает, что оно восьмеричное, поэтому 0345 - это фактически 229 в десятичном виде. Я не уверен, как вы ожидаете добавить ноль к числу, используя побитовые операции, которые работают с двоичным представлением числа. Если вы хотите добавить его в десятичное представление, это ничего не будет значить, поскольку число всегда хранится в двоичном формате, а значение для вашего удобства преобразуется в десятичное при отображении. При любых вычислениях десятичное значение не имеет значения, только двоичное.
Если вас интересует только отображение значения с 0 в начале, то вы можете добавить 0 к строке, содержащей это число, что можно легко сделать следующим образом "0" + i
.