Поскольку int
должен иметь ширину не менее 32 бит, ~ 50 определенно не равно 13. Я думаю, вы предполагаете, что int
имеет ширину всего 8 бит, что, возможно, имело место около 237 лет назад, но определенно не в наши дни и не на Яве, во всяком случае. Если вам нужен тип данных с гарантированной шириной 8 бит, используйте byte
.
Но даже тогда ~ 50 - это не 13, только если принять во внимание младшие 6 бит. Но все это не имеет ничего общего с дополнением до двух.