Основы объектно-ориентированного программирования на языке C# book | Page 91

6.4 Двiйкова арифметика
вихiдного числа до найбiльшого числа без знака, що мiститься в розряднiй сiтцi. У зв’ язку з цим одержання зворотного коду двiйкового вiд’ ємного числа зводиться до одержання iнверсiï n-розрядного коду абсолютноï величини цього числа. Оскiльки модуль чисел, що зображуються в n-розряднiй сiтцi, | I | < a, то в старшому( знаковому) розрядi зворотного коду в додатних чисел буде 0, а у вiд’ ємних – 1. У цифрових розрядах зворотного двiйкового коду зображується або модуль числа( для додатних чисел), або його iнверсiя( для вiд’ ємних).
Розглянемо операцiю алгебраïчного додавання:
+
0101
( 5)
1101
(– 2)
10010 1
0011
( 3)
Перенесення в знаковому розрядi при використаннi зворотного коду має додаватися у молодший розряд суми. Таке перенесення називається круговим, або циклiчним. При виконаннi розрахункiв на машинi може виникнути як додатний, так i вiд’ ємний нуль. Додатний нуль має вигляд:(+ 0) = 00000... 00 – для прямого зображення;(+ 0) = 00000... 00 – для зворотного зображення. Вiд’ ємний нуль має вигляд:(– 0) = 100000... 00 – для прямого зображення;(– 0) = 111111... 11 – для зворотного зображення. Щоб уникнути виникнення двох нулiв, застосовують додатковий код.
Додатковий код. Перейдемо тепер до питання зображення вiд’ ємних чисел. Для визначеностi розглянемо зображення чисел, у якому будь-яке число займає рiвно вiсiм бiтiв. Iз запису у двiйковiй системi числення рiвностi(– 1) + 1 = 0 легко знайти, який вигляд повинне мати невiдоме нам поки що двiйкове зображення xxxxxxxx числа – 1: xxxxxxxx + 00000001 = 00000000. Ясно, що на мiсцi символiв xxxxxxxx має бути число 11111111. Правильним результатом додавання при цьому варто було б вважати 100000000, а не 00000000, але в нас є восьмибiтове зображення i, оскiльки результат має вмiститися в байт,; то старша одиниця вiдкидається.
Отже, число – 1 кодується як 11111111. Далi вже зовсiм просто: для одержання – 2 потрiбно – 1 зменшити на одиницю, що дасть 11111110; число – 3 зображується як 11111101 i т. д.
91