Причина может быть в том, что сдвиг вправо реализован как арифметический.
При арифметическом сдвиге знаковый разряд воспроизводится.
Поэтому для отрицательных чисел нуля никогда не получится — только -1.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[2]: Почему right shift числа на количество бит типа не дает 0?
Здравствуйте, LaptevVV, Вы писали:
LVV>Причина может быть в том, что сдвиг вправо реализован как арифметический. LVV>При арифметическом сдвиге знаковый разряд воспроизводится. LVV>Поэтому для отрицательных чисел нуля никогда не получится — только -1.
интересная идея — она могла бы объяснить первый и третий результат (если все сдвиги в языке знаковые), но не годится для двух оставшихся
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Почему right shift числа на количество бит типа не дает 0?
BZ>интересная идея — она могла бы объяснить первый и третий результат (если все сдвиги в языке знаковые), но не годится для двух оставшихся
Вообще у меня такое впечатление, что сдвиг просто не выполняется...
Или он циклический...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[4]: Почему right shift числа на количество бит типа не дает 0?
Здравствуйте, LaptevVV, Вы писали:
LVV>Вообще у меня такое впечатление, что сдвиг просто не выполняется...
x86 использует только младшие 4-5-6 бит CL для определения величины сдвига. это повелось ещё с 1978 года и затем было повторено в 32/64-битных архитектурах
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Почему right shift числа на количество бит типа не дает 0?
LVV>>Вообще у меня такое впечатление, что сдвиг просто не выполняется... BZ>x86 использует только младшие 4-5-6 бит CL для определения величины сдвига. это повелось ещё с 1978 года и затем было повторено в 32/64-битных архитектурах
Не, это понятно. 32 — это 5-й разряд (от 0-ого).
Сами величины как будто не сдвигаются.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[6]: Почему right shift числа на количество бит типа не дает 0?
Здравствуйте, LaptevVV, Вы писали:
LVV>>>Вообще у меня такое впечатление, что сдвиг просто не выполняется... BZ>>x86 использует только младшие 4-5-6 бит CL для определения величины сдвига. это повелось ещё с 1978 года и затем было повторено в 32/64-битных архитектурах LVV>Не, это понятно. 32 — это 5-й разряд (от 0-ого). LVV>Сами величины как будто не сдвигаются.
32 = 100000b
cpu берёт младшие 5 бит, т.е. 00000b и на эти 0 бит сдвигает
Люди, я люблю вас! Будьте бдительны!!!
Re[7]: Почему right shift числа на количество бит типа не дает 0?
LVV>>Сами величины как будто не сдвигаются. BZ>32 = 100000b BZ>cpu берёт младшие 5 бит, т.е. 00000b и на эти 0 бит сдвигает
Спасибо. Надо было просто в справочник посмотреть...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!