Loading...
IvanKrastev avatar IvanKrastev 0 Точки

Странно поведение на побитов оператор- >>

Здравейте, моля за малко помощ при разбирането на побитовите оператори. Използвам проста задача, в която съм настроил всички битове на 64 битово положително число на "1". Зададеното число се опитвам да го "преместя" с 64 позиции на дясно, като очаквам резултатът да е 0, но получавам същият резултат. Променях броя на позиициите на преместване произволно, но резултатът е все същият. Това е линк към простият пример, който използвам, за да си обясня работата на побитовите оператори: https://pastebin.com/H45XuS0r.

Благодаря на всички за оказаната помощ.

 

0
Programming Basics
borkins avatar borkins 47 Точки

Здравей колега!
Не получаваш 0, защото не може да преместваш числото повече от 31 пъти за int и 63 за long.
Ако числото А е 32 битово и B > 31, то от B се ползват само първите 5 бита за операцията.
Ако числото А е 64 битово и B > 63, то от B се ползват само първите 6 бита за операцията.
Например:
int A = 2147483647, B = 32;
A е 32 битово число, B (bin: 0010 0000) > 31, then B (bin: 0 0000) = 0.
Тогава: A >> B = 2147483647 >> 0 = 2147483647.

long A = 9223372036854775807, B = 65;
A e 64 битово число, B (bin: 0100 0001) > 63, then B (bin: 00 0001) = 1.
Тогава A >> B = 9223372036854775807 >> 65 = 4611686018427387903;

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.