logo

Що таке доповнення 2s у C?

Доповнення 2s у C генерується з доповнення 1s у C. Як ми знаємо, доповнення 1s до двійкового числа створюється шляхом перетворення біта 1 на 0 і 0 на 1; доповнення 2s до двійкового числа генерується шляхом додавання одиниці до доповнення 1s двійкового числа.

Коротше кажучи, ми можемо сказати, що доповнення 2s у C визначається як сума доповнення до одиниці в C та одиниці.

2s доповнення в C

На наведеному вище малюнку двійкове число дорівнює 00010100, а його доповнення до одиниці обчислюється шляхом перетворення біта 1 в 0 і 0 в 1 навпаки. Таким чином, доповнення до одиниці стає 11101011. Після обчислення доповнення до одиниці ми обчислюємо доповнення до двох, додаючи 1 до доповнення до одиниці, і результатом є 11101100.

Створимо програму доповнення 2s.

 #include int main() { int n; // variable declaration printf('Enter the number of bits do you want to enter :'); scanf('%d',&n); char binary[n+1]; // binary array declaration; char onescomplement[n+1]; // onescomplement array declaration char twoscomplement[n+1]; // twoscomplement array declaration int carry=1; // variable initialization printf('
Enter the binary number : '); scanf('%s', binary); printf('%s', binary); printf('
The ones complement of the binary number is :&apos;); // Finding onescomplement in C for(int i=0;i<n;i++) { if(binary[i]="=&apos;0&apos;)" onescomplement[i]="1" ; else } onescomplement[n]="" printf('%s',onescomplement); printf('
the twos complement of a binary number is : '); finding twoscomplement in c for(int i="n-1;">=0; i--) { if(onescomplement[i] == &apos;1&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;0&apos;; } else if(onescomplement[i] == &apos;0&apos; &amp;&amp; carry == 1) { twoscomplement[i] = &apos;1&apos;; carry = 0; } else { twoscomplement[i] = onescomplement[i]; } } twoscomplement[n]=&apos;&apos;; printf(&apos;%s&apos;,twoscomplement); return 0; } </n;i++)>

Вихід

2s доповнення в C

Аналіз вищевказаної програми,

  • Спочатку ми вводимо кількість бітів, і вона зберігається в ' п ' змінна.
  • Після введення кількості бітів ми оголошуємо символьний масив, тобто char двійковий [n+1], який містить двійкове число. ' п ' — кількість бітів, яку ми ввели на попередньому кроці; він в основному визначає розмір масиву.
  • Ми оголошуємо ще два масиви, тобто одне доповнення [n+1] , і два доповнення[n+1]. The одне доповнення [n+1] масив містить доповнення одиниць до двійкового числа, тоді як два доповнення[n+1] масив містить два доповнення до двійкового числа.
  • Ініціалізувати нести і присвоїти 1 значення цій змінній.
  • Після декларацій ми вводимо двійкове число.
  • Тепер ми просто обчислюємо доповнення до одиниці двійкового числа. Для цього ми створюємо a петля який виконує ітерації по всьому двійковому масиву, for(int i=0;i. У циклі for перевіряється умова, дорівнює біт 1 чи 0. Якщо біт дорівнює 1, то onecomplement[i]=0 інше onecomplement[i]=1 . Таким чином генерується доповнення до двійкового числа.
  • Після обчислення свого доповнення ми генеруємо доповнення 2 до двійкового числа. Для цього ми створюємо a петля який виконує ітерацію від останнього елемента до початкового. У циклі for ми маємо три умови:
    • Якщо біт onecomplement[i] дорівнює 1, а значення переносу дорівнює 1, тоді ми ставимо 0 у twocomplement[i].
    • Якщо біт onecomplement[i] дорівнює 0, а значення переносу дорівнює 1, тоді ми поміщаємо 1 у twoscomplement[i] і 0 у переносі.
    • Якщо наведені вище дві умови хибні, тоді onecomplement[i] дорівнює twoscomplement[i].

Цілі числа зі знаком часто представлені в C за допомогою позначення доповнення до двох . Використовуючи те саме двійкове представлення пропонує механізм для вираження обох позитивний і цілі від’ємні числа . The старший біт (MSB) використовується як знаковий біт в подання з двома доповненнями , де 0 позначає a натуральне число , і 1 позначає a від'ємне число .

Починаючи з a від'ємні числа абсолютне значення в двійковій формі, ви можете взяти одиничне доповнення (порозрядне заперечення) цієї вартості, щоб отримати доповнення двох представництво від'ємне ціле число . Ви додаєте 1 до результуюче значення придбати представництво доповнення двох .

The двостороннє кодування в C може представляти цілі числа зі знаком і може виконувати швидкі арифметичні операції. Однією з переваг використання доповнення двох є можливість робити додаток і віднімання використовуючи ті самі двійкові операції, що й для чисел без знаку.

The двійкові числа додаються разом як беззнакові цілі числа при додаванні доповнення до двох. Винос з місця розташування в основний критичний біт просто нехтується. Завдяки цьому факту обробка підписані числа інакше не потрібно, і додавання стає простим.

Подумайте про додавання -5 і -3 використовуючи 8-розрядне доповнення до двох представлення, наприклад:

Двійкове число для -5 є 11111011.

Двійкове число для -3 є 11111101 .

виконання додавання:

 11111011 (-5) + 11111101 (-3) ------------- 111110100 (-8) 

Відповідь така 111110100 , який в доповнення двох дорівнює -8 .

Подібно до додавання, віднімання можна виконати, обробляючи другий операнд доповнення двох, ніби це додавання. Іншими словами, ви додаєте два доповнення від’ємного числа до першого операнда, щоб видалити його.

Наприклад, коли -3 віднімається з -5 :

У двійковій системі -5 представлений 11111011 і -(-3) за 00000011 (доповнення до двох -3 )

Виконання віднімання

 11111011 (-5) + 00000011 (+3) ------------- 11111110 (-8) 

Результат є 11111110 , що в доповненні до двох дорівнює -8 .

Висновок:

У C, 2s доповнення це двійкове представлення від’ємного числа, яке створюється додаванням одиниці до 1-е доповнення . Комп’ютерні системи часто використовують цю ідею для представлення чисел зі знаком і ефективного виконання арифметичних операцій.

Щоб отримати 2s доповнення двійкового цілого числа, спочатку потрібно визначити 1-е доповнення числа шляхом перевертання бітів. Після цього представництво в 2s доповнення отримано шляхом додавання одного до 1-е доповнення . The старший біт (MSB) функціонуватиме як знаковий біт, виражаючи, чи є число позитивний або негативний .

Обчислення 2s доповнення для заданого двійкового цілого числа показано у доданій програмі на C. Користувачеві пропонується ввести обидва двійкове число і кількість бітів. Після цього програма виконує необхідні процедури для отримання доповнення 1s, а потім 2s доповнення . Потім показуються результати.

В інформатиці та програмуванні дуже важливо розуміти 2s доповнення представлення, оскільки воно дає змогу ефективно обробляти від’ємні значення, виражені у двійковій формі. Це робить додавання, віднімання , і логічні операції простіше на обох позитивний і негативні числа . Діапазон репрезентовані цілі числа є симетричним відносно нуль внаслідок 2s доповнення подання, що робить його придатним для різноманітних числових операцій.

Програмісти можуть виконувати арифметичні операції, працювати з двійковими даними та розробляти алгоритми, використовуючи цілі числа зі знаком у C та інших мовах програмування, розуміючи ідею доповнення 2s і правильно її використовуючи.