Старый 30.04.2009, 00:09   #11
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума

По умолчанию Основы ЭВМ


Вычитание

Вычитание идёт в АЛУ по правилу сложения, только над «отрицательным» числом делаются нехитрые преобразования. К большему числу прибавляется число код которого преобразован в дополнительный код, знак определяется знаком большего числа.

Виды кодов:

Прямой – запись числа в двоичной форме.

Обратный – обратный код в двоичной форме получается с помощью операции НЕ, то есть все 1 заменяются на 0, и соответственно все 0 на 1.

Дополнительный – это обратный код увеличенный на 1, то есть к младшему биту прибавляем 1.

Рассмотрим АЛУ разрядностью 64 (6 битовое число) и вычитание к примеру:
34 – 19
теперь приступим, на примере показывать преобразования числа 19.

010011 – прямой код
101100 – обратный код
101101 – дополнительный код

100010
101101
---------
1001111


В итоге получили 001111(bin)=15(dec)
Довольно интересно и не привычно. Теперь рассмотрим отрицательные числа. Распишем поле 4 битового числа, если оно без знаковое, то диапазон его значения колеблется от 0 до 15, если же оно расширено отрицательными числами, то диапазон изменяется от 7 до -8 (те же 16 чисел):
Код:
Dec без  | bin без   | dec         | bin
знаковое| знаковое|знаковое | знаковое
0	0000	7	0 111
1	0001	6	0 110
2	0010	5	0 101
3	0011	4	0 100
4	0100	3	0 011
5	0101	2	0 010
6	0110	1	0 001
7	0111	0	0 000
8	1000	-1	1 111
9	1001	-2	1 110
10	1010	-3	1 101
11	1011	-4	1 100
12	1100	-5	1 011
13	1101	-6	1 010
14	1110	-7	1 001
15	1111	-8	1 000
Если обратить внимание, то когда число идёт знаковое число, то первый бит обозначает знак.
Подведя итоги пройденного, для оптимизации следует помнить о возможном результате сложения вычитания, и подбирать на основе этого диапазона число, размер которого максимально близок, поскольку, чем больше по разрядности число, тем оно больше требует ОЗУ (Оперативно Запоминающее Устройство, либо просто оперативная память).
Так же следует помнить, что используя знаковое число, диапазон уменьшается в 2 раза, в вследствие этого если число исключительно без знаковое, то нано задавать число как без знаковое. Обозначение чисел по их диапазонам будет после, когда буду рассказывать о программирование на примере какого либо языка.
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Последний раз редактировалось HolyAnimal; 30.04.2009 в 00:11.
Re: Основы ЭВМ
Старый 30.04.2009, 00:18   #12
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию

Умножение чисел

Для более понятного восприятия, рассмотрим метод так называемого школьного курса. Умножение происходит на подобие сложения столбиком, но уже используются другие правила:

0 х 0 = 00; 0 х 1 = 00;
1 х 1 = 10; 1 х 0 = 00;

Теперь на примере:

Код:
  101
    10
  000
1010
1010
А теперь, как же на самом деле это происходит в АЛУ. Операция умножения сводится к операции сдвига и операции сложения. В случае с дробными числами, положение точки определяется, так же как и при умножении десятичных чисел.

Код:
        111
        101

      1110
    000
  1110
-------
1000110
В результате получаем 10011b = 35d = 7d*5d
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Деление
Старый 30.04.2009, 00:19   #13
HolyAnimal
RAM 96MB
 
Аватар для HolyAnimal
 
Регистрация: 25.04.2009
Сообщений: 114
HolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всемHolyAnimal - это имя известно всем
HolyAnimal вне форума
По умолчанию Деление

Деление

Деление происходит очень сложно для восприятия человека, не умеющего в уме складывать в двоичной форме, поэтому я пока воздержусь от полного описания процесса деления в двоичной форме.
И так кратко,
Процесс деление сводится к операции сдвига и прибавления дополнительного модифицированного кода делителя (вычитание делителя).

Если же вы в состояние понять, то постарайтесь вникнуть в полный вариант по шагам:
1) Определить знак частного суммированием по модулю два содержимых знаковых разрядов делимого и делителя.
2) Из делимого вычесть делитель. Если остаток отрицательный, перейти к пункту 3. В противном случае вычисление закончить (произошло переполнение).
3) Запомнить знак остатка.
4) Сдвинуть остаток на один разряд влево.
5) Присвоить делителю знак, обратный знаку остатка, запомненному в п. 2.
6) Сложить сдвинутый остаток и делитель (с учетом знака).
7) Присвоить цифре частного значение, противоположное коду знака остатка.
8) Повторять выполнение пунктов 3—7 до тех пор, пока не будет обеспечена требуемая точность вычисления частного.
Ну если это не понятно, ничего страшного. Это сложно воспринять, но пока вы не можете воспринимать такие вещи, вам ещё рано начинать программировать на языках низкого уровня, к примеру: Асм или машинном коде. Как говорится программированию за месяц не научить. Но я постараюсь… теперь переходим к процессору и памяти, но это уже другой раздел. А по этому разделу пишите свои вопросы, жду их с нетерпением….
С уважением, HolyAnimal
__________________
live(Action) {
while (Me.Emo_coder == True){
Me.Living();
If (Me.Emo == false){return 0;}
}
}
  Ответить с цитированием
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.



взломать аську аську взломать взлом программы сделать взлом программы как сделать взлом программы хакерские сайты как легко взломать аську лучшие хакерские сайты топ список хакерские сайты взлом паролей легкий взлом паролей

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd. Перевод: zCarot