Я смотрю свои лекционные заметки и вижу это:
![enter image description here](https://i.stack.imgur.com/jN6VJ.png)
Почему MSB для int является 31-м, а не 32-м битом? Если int имеет 4 байта, то есть 32 бита, а самый левый бит - 32-й, верно?
В записках написано
крайний левый бит представляет знак целого числа ... Если MSB равен 1, целое число является отрицательным. Обратите внимание, что MSB является знаком, независимо от того, какой размер целочисленного типа ... Например, для целого числа это бит 31. Для длинных это бит 63. Для байта это бит 7. Чтобы получить два дополнения, отрицательные от положительного числа, сначала инвертируют все биты, изменяют 0 на 1 и 1 на 0, а затем добавляют 1.
Это правильно?
Также я не понимаю, почему инвертирование всех битов и добавление одного дает мне отрицательное число. Может кто-нибудь объяснить это лучше?