я шел через go
учебник по golang.org, и я наткнулся на пример, который я частично понимаю ...Как этот битхифтинг работает в этом примере?
MaxInt uint64 = 1<<64 - 1
Теперь я понимаю, что это смещаться Бит 64 места влево, которые сделали бы это 1, а затем 64 0.
Мой вопрос: почему это максимальное целое число, которое может быть достигнуто в 64-битном номере. Не будет ли максимальное целое число 111111111....(until the 64th 1)
вместо 100000...(until the 64th one)
?
'1 << 64 = 10000000000000000' (hex)' 1 << 64 - 1 = FFFFFFFFFFFFFFFF' (hex), который является самым большим * неподписанным * 64-битным целым числом, которое может быть сохранено в системе нумерации * twos-compliment * , (если вы все еще застряли, '1 << 64' - это номер' 65', а не '64') –
ahh ok, поэтому, вычитая 1, вы делаете 65-й бит исчезающим, оставляя' 111111 ..... '? – deltaskelta
Да, вы поняли! (но оставление 'FFFF ... (16 шестнадцатеричных цифр)' или '1111 .... (64 двоичных 1s') –