Приятная двусмысленность
"...Отрубил Иван-царевич 32768 голов --- и умер Змей Горыныч,http://santer.livejournal.com/600.html?mode=reply
потому что был он шестнадцатиразрядным."
Ну и дизайн, даже непонятно, что на ЖЖ зашёл, а не на какой-нибудь фишки.нет
Это дефолтное поведение ассемблерной команды сдвига - сдвиг берется по модулю 32.
Я раньше не замечал этой особенности.
Спасибо за объяснение, а то мне как-то лень было с этим разбираться.
Вот только непонятно, а на си "<<" тоже "ambiguous"?
---
...Я работаю антинаучным аферистом...
Оставить комментарий
Ivan8209
Это о том, к чему приводит строгое следование стандарту:
такое определение сдвига влево ломает устоявшуюся практику,
но несмотря на это, всё чётко, всё верно.
Ибо, сказано в Писании (ANS X3.215--1994, 6.1.1805):
"Perform a logical left shift of u bit-places on x1, giving x2.
Put zeroes into the least significant bits vacated by the shift.
An ambiguous condition exists if u is greater than or
equal to the number of bits in a cell." (Курсив мой. --- K.)
И ни к чему не прикопаешься, поскольку поведение системы
полностью удовлетворяет ст. 3.4.4: "ignore and continue."
---
"...Отрубил Иван-царевич 32768 голов --- и умер Змей Горыныч,
потому что был он шестнадцатиразрядным."