Я с вами согласен, опускаться на постоянку на низкий уровень смысла нет иначе зачем он вообще тогда этот уровень.
Но еще ни один человек не научился одномоментно какому либо знанию или навыку полностью. Все делается по шагам, постепенно. Сначала человек учится ползать, потом делает шаг, потом уверенно ходит и лишь потом уже бегает и катается на велосипеде. Никто не учит ребенка делать шаг через элементы бега.
Так и здесь. Но это мое ИМХО. Возможно в вашем опыте были люди, которые только сев за комп уже научились профессионально программировать.
Народ, я честно почитал про дополнительный код. Уже даже начал понимать почти уверенно, как этим пользоваться - т.е. переводим процесс вычитания в процесс сложения, инвертируя и добавляя 1 к числу с отрицательным знаком. Уже даже разобрался про старший бит, что от него зависит знак числа. Даже разобрался с переводом ответа в прямой код. Т.е. прибавлял к числу ответа (если старший бит равен 1) "-1", т.е. прибавлял к отрицательному ответу "11111110", потом ответ инвертировал, не забывая, что число отрицательное. Окей.
Но я не могу решить эти задачи. Третий день не могу спать спокойно.
Сжальтесь, подскажите ответы? Я уже в ардуину загнал задачи, запустил в цикле, чтобы найти правильный ответ, но ничего не получается.
Подскажите пожалуйста, а я уже догоню по ответу почему это так.
((((
Всем заранее спасибо. Писать что нубяра - нет необходимости.
Всем привет. Проанализировал задачи, зная подсказанные ответы. По второй задаче, там где умножение на 2 (ну, по идее, машина ведь это считает просто сложением числа с самим собой) вопроса нет. Хотя, конечно, с какойто стороны, ловко получилось. А вот по поводу первой задачи, правильно ли я понимаю, что вся шутка этого фокуса заключена в свойстве преобразования в дополнительный код?
Свою ошибку, почему не нашёл ответ с помощью скетча (завтра, кстати, перепроверю с помощью скетча, но не потому, что не доверяю, а для проверки самой ардуины. Просто правильные пределы для цикла проставить и получить заветный результат в монитор порта) , это то, что во всех примерах про доп.код оперируют с однобайтным числом, а у нас ведь речь идёт про двух-байтное число.
Не представляю, как эти задачи предполагалось высчитать в уме, условно говоря... А так да, интересно. И кстати, может просто везло, но ни в каких примерах никогда не попадалось задание интервала сложением, всегда вычитанием. Потому даже никогда и не задумывался складывать.) ) ) всем спасибо, тема для меня неожиданно оказалась очень интересной!
Спасибо! Вот опять же, ещё одна интересная тема. Двоичная арифметика. Начну читать по ней материал. Вот так, с обычных (обычных ли?) дигитал врайт, плавно спускаюсь к пониманию работы с портами уже на уровень ниже. Ну чтож, пора пополнять знания, хоть элементарные основы.. .
А после двоичных операций , не лишним будет почитать о том как реализуется умножение на нечетные множители, потом и про деление. И читать так можно бесконечно. Это только обыватель думает, что все кто сели за комп уже "куллпрограммисты" .....
А вы опять всё пишете, чёт как-то не смешно.
Да, Вы правы. Удалил.
Я с вами согласен, опускаться на постоянку на низкий уровень смысла нет иначе зачем он вообще тогда этот уровень.
Но еще ни один человек не научился одномоментно какому либо знанию или навыку полностью. Все делается по шагам, постепенно. Сначала человек учится ползать, потом делает шаг, потом уверенно ходит и лишь потом уже бегает и катается на велосипеде. Никто не учит ребенка делать шаг через элементы бега.
Так и здесь. Но это мое ИМХО. Возможно в вашем опыте были люди, которые только сев за комп уже научились профессионально программировать.
Всем привет!
Народ, я честно почитал про дополнительный код. Уже даже начал понимать почти уверенно, как этим пользоваться - т.е. переводим процесс вычитания в процесс сложения, инвертируя и добавляя 1 к числу с отрицательным знаком. Уже даже разобрался про старший бит, что от него зависит знак числа. Даже разобрался с переводом ответа в прямой код. Т.е. прибавлял к числу ответа (если старший бит равен 1) "-1", т.е. прибавлял к отрицательному ответу "11111110", потом ответ инвертировал, не забывая, что число отрицательное. Окей.
Но я не могу решить эти задачи. Третий день не могу спать спокойно.
Сжальтесь, подскажите ответы? Я уже в ардуину загнал задачи, запустил в цикле, чтобы найти правильный ответ, но ничего не получается.
Подскажите пожалуйста, а я уже догоню по ответу почему это так.
((((
Всем заранее спасибо. Писать что нубяра - нет необходимости.
Заранее спасибо.
Евгений, ОГРОМНОЕ спасибо!
Скопировал, буду осознавать!
Всем привет. Проанализировал задачи, зная подсказанные ответы. По второй задаче, там где умножение на 2 (ну, по идее, машина ведь это считает просто сложением числа с самим собой) вопроса нет. Хотя, конечно, с какойто стороны, ловко получилось. А вот по поводу первой задачи, правильно ли я понимаю, что вся шутка этого фокуса заключена в свойстве преобразования в дополнительный код?
Свою ошибку, почему не нашёл ответ с помощью скетча (завтра, кстати, перепроверю с помощью скетча, но не потому, что не доверяю, а для проверки самой ардуины. Просто правильные пределы для цикла проставить и получить заветный результат в монитор порта) , это то, что во всех примерах про доп.код оперируют с однобайтным числом, а у нас ведь речь идёт про двух-байтное число.
Не представляю, как эти задачи предполагалось высчитать в уме, условно говоря... А так да, интересно. И кстати, может просто везло, но ни в каких примерах никогда не попадалось задание интервала сложением, всегда вычитанием. Потому даже никогда и не задумывался складывать.) ) ) всем спасибо, тема для меня неожиданно оказалась очень интересной!
Машине нет нужды складывать число с собой. Она просто двигает биты влево/вправо )) Умножение на 2, 4, 8 и т.д. - это побитовый сдвиг влево
25 * 2 = 50
25 * 4 = 100
И т.д. Сдвиг вправо дает, соответственно, деление на 2, 4, 8 и т.д.
Спасибо! Вот опять же, ещё одна интересная тема. Двоичная арифметика. Начну читать по ней материал. Вот так, с обычных (обычных ли?) дигитал врайт, плавно спускаюсь к пониманию работы с портами уже на уровень ниже. Ну чтож, пора пополнять знания, хоть элементарные основы.. .
А после двоичных операций , не лишним будет почитать о том как реализуется умножение на нечетные множители, потом и про деление. И читать так можно бесконечно. Это только обыватель думает, что все кто сели за комп уже "куллпрограммисты" .....