Я понимаю, что >>>
исправляет переполнение: при добавлении двух больших положительных длин вы можете получить отрицательное число. Может кто-нибудь объяснить, как этот побитовый сдвиг магически исправляет проблему переполнения? И как он отличается от >>
?
Мое подозрение: я думаю, что это связано с тем, что Java использует два комплимента, поэтому переполнение является правильным числом, если у нас есть дополнительное пространство, но потому что мы не делаем его отрицательным. Поэтому, когда вы смещаетесь и гремете ноль, он волшебным образом фиксируется из-за двух комплиментов. Но я могу ошибаться, и кто-то с пораздельным мозгом должен подтвердить.:)