Страница: 1 |
Вопрос: Помогите в Ассемблере | Добавлено: 07.11.07 08:20 |
Автор вопроса: ![]() |
Доброе время суток!Форрумчане помогите мне разобраться с одной не большой штукой.Помогите разобраться с двоичной арифметикой.Почему 1+1=10 , 1+1+1=11 , и почему 01000001=65 и т.д.Обьясните как происходит сложение.Зарание благодарен. |
Ответы | Всего ответов: 11 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ICQ: 387761649 Вопросов: 32 Ответов: 169 |
Web-сайт: Профиль | Цитата | #1 | Добавлено: 07.11.07 12:50 |
У, это надо объяснять всю двоичную арифметику. А если нужно только складывать числа, то это делается столбиком:
10101000 10101011 +-------- 101010011 Правило сложения: 0+0=0 0+1=1 1+0=1 1+1=10 10+1=11 и т.д. Тоже самое, что и в обычной арифметике, только в основании 2. |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: 308-534-060 Вопросов: 20 Ответов: 1860 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 08.11.07 14:48 |
Про двоичную арифметику пишется почти в каждом учебном пособии по ассемблеру. Не помню, вроде в книгах у Юрова и у Зубкова в книгах это было. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #3 | Добавлено: 08.11.07 23:45 |
Почему 1+1=10 , 1+1+1=11 , и почему 01000001=65 и т.д Алах так придумал.
|
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ICQ: 295002202 Вопросов: 87 Ответов: 1684 |
Профиль | Цитата | #4 | Добавлено: 09.11.07 01:18 |
Программерские недели в макдональдс!
1+1=10!!! |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 20 Ответов: 285 |
Профиль | Цитата | #5 | Добавлено: 05.01.08 17:02 |
Правильно, 10 и будет. Вот простой ответ (так, как я эту тему понимаю, хотя, может быть, и путанно):
Любой байт состоит из 8 битов, например: 11111111 = FF = 255
В Асме, по моим наблюдениям, все в основном строится на 16-ричных числах, а потом - уже двоичные в машинном коде. Так вот, любая цифра 16-ричного числа состоит из 4 битов, каждый из которых представляет собой 2 в степени от 0 до 3. Например, 16-ричное число FF (255 в нормальном понимании) сотсоит из таких битов: F F 1111 1111 8421 8421 - это числа, соответствующие номерам битов Каждый бит справа налево представляет собой число от 1 до 8: 1, 2, 4 ,8. Чтобы составить число, записанное в двоичной форме, слаживают все числа, соответствующие единичным битам. Если например, у нас есть двоичное число: 11011001
то мы его разбиваем на два блока по 4 цифры (справа налево и всегда по 4 цифры - это полубайт), тогда у нас выйдет: 1101 1001 8421 8421 - это числа, соответствующие номерам битов Теперь слаживаем числа, соответствующие единичным битам (можно справа налево): 1 1 0 1 8+4+0+1 = 13 = 0D в 16-ричном виде то же делаем и со вторым числом: 1 0 0 1 8+0+0+1 = 9 Итого вышло число D9 в 16-ричном виде, по-нашему - 217. Отсюда мораль: 1+1 всегда будет равен 10 в двоичном виде: справа налево 0 - это 1, а 1, следующая за ним - 2. Нулевой бит мы пропускаем - остается 2 бит - это двойка. Вот и результат такой.
Уфф... |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #6 | Добавлено: 08.01.08 03:33 |
точно что уфф ))) |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ICQ: 308-534-060 Вопросов: 20 Ответов: 1860 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 10.01.08 13:27 |
Вот код на Си, который переводит двоичные числа в десятичные. Отсюда и мораль ![]() /* Перевод двоичных чисел в десятичные */
#include <stdio.h> main() { int number, residue, digit, multiplier = 1, decimal = 0; printf("Введите двоичное число: " ![]() scanf("%d", &number); residue = number; while (residue > 0) { digit = residue % 10; decimal += digit * multiplier; multiplier *= 2; residue /= 10; } printf("0x%d == %d", number, decimal); return 0; } |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 2 |
Web-сайт: Профиль | Цитата | #8 | Добавлено: 14.11.08 09:45 |
А вот где можно скачать книги и тогда все станет понятно.
http://allex72008.narod.ru |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #9 | Добавлено: 14.11.08 15:03 |
Для компьютера нет такого понятия как двоичная, десятиричная, шестнадцатиричная и прочих систем счислений.
Он может работать только в двоичной, вне зависимости от того хотелось бы тебе этого или нет. |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 278109632 Вопросов: 42 Ответов: 3949 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 14.11.08 15:14 |
Археологи, мля. |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 14.11.08 17:02 |
Компьютер вообще не знает, что такое система счисления. |
Страница: 1 |
|