Я уверен, что это легко для тех, кто видит это первым!
Почему в Java код вроде
long one = 1 << 0;
long thirty = 1 << 30;
long thirtyOne = 1 << 31;
long thirtyTwo = 1 << 32;
System.out.println(one+" = "+Long.toBinaryString(1 << 0));
System.out.println(thirty+" = "+Long.toBinaryString(1 << 30));
System.out.println(thirtyOne+" = "+Long.toBinaryString(1 << 31));
System.out.println(thirtyTwo+" = "+Long.toBinaryString(1 << 32));
Печать
1 = 1
1073741824 = 1000000000000000000000000000000
-2147483648 = 1111111111111111111111111111111110000000000000000000000000000000
1 = 1
Это не имеет смысла для меня. long
- это 64-битное число, тогда как оно похоже на int
в приведенном выше. Я знаю, что bithifted byte
претерпевает продвижение int, но я не вижу, что происходит в этом случае.
Любые указатели на то, что происходит здесь, будут хорошими:)
спасибо
EDIT: спасибо за все ответы - я понял, что происходит, как только я нажал "отправить", но SO перешел в режим readonly
, и я не смог удалить! Большое спасибо!