logo

Шта је 2с комплемент у Ц?

Комплемент 2с у Ц се генерише из комплемента 1с у Ц. Као што знамо да се комплемент 1с бинарног броја креира трансформацијом бита 1 у 0 и 0 у 1; 2с комплемент бинарног броја се генерише додавањем један комплементу 1с бинарног броја.

Укратко, можемо рећи да је комплемент 2с у Ц дефинисан као збир комплемента један у Ц и један.

2с комплемента у Ц

На горњој слици, бинарни број је једнак 00010100, а његов комплемент се израчунава трансформацијом бита 1 у 0 и 0 у 1 обрнуто. Према томе, један комплемент постаје 11101011. Након израчунавања комплемента, израчунавамо комплемент за два тако што додамо 1 комплементу јединице, а његов резултат је 11101100.

Хајде да направимо програм комплемента од 2с.

 #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++)>

Излаз

2с комплемента у Ц

Анализа горе наведеног програма,

  • Прво, уносимо број битова и он се чува у ' н ' променљива.
  • Након уноса броја битова, декларишемо низ знакова, тј. цхар бинари[н+1], који садржи бинарни број. ' н ' је број битова које смо унели у претходном кораку; у основи дефинише величину низа.
  • Декларишемо још два низа, тј. онекомплемент[н+1] , и два допуна[н+1]. Тхе онекомплемент[н+1] низ садржи јединице допуну бинарног броја док је два допуна [н+1] низ садржи два комплемента бинарног броја.
  • Иницијализујте носити променљивој и додели 1 вредност овој променљивој.
  • Након декларације, уносимо бинарни број.
  • Сада, једноставно израчунамо јединицу бинарног броја. Да бисмо то урадили, креирамо а петља који се понавља кроз бинарни низ, фор(инт и=0;и. У фор петљи, услов се проверава да ли је бит 1 или 0. Ако је бит 1 онда онекомплемент[и]=0 друго онекомплемент[и]=1 . На овај начин се генерише нечији комплемент бинарног броја.
  • Након израчунавања нечијег комплемента, генеришемо комплемент од 2с бинарног броја. Да бисмо то урадили, креирамо а петља који се понавља од последњег до почетног елемента. У фор петљи, имамо три услова:
    • Ако је бит онекомплемента[и] 1, а вредност преношења је 1, онда стављамо 0 у твоцомплемент[и].
    • Ако је бит онекомплемента[и] 0, а вредност преноса је 1 онда стављамо 1 у твосцомплемент[и] и 0 у преношење.
    • Ако су горња два услова нетачна, онда је онецомплемент[и] једнак твосцомплемент[и].

Потписани цели бројеви су често представљени у Ц користећи нотација комплемента два . Користећи исто бинарно представљање нуди механизам за изражавање и једног и другог позитивним и негативни цели бројеви . Тхе најважнији бит (МСБ) се користи као сигн бит у а представљање комплемента два , где 0 означава а позитиван цео број , и 1 означава а негативан број .

Почевши од а негативни бројеви апсолутну вредност у бинарном облику, можете узети нечији комплемент (битна негација) те вредности да бисте добили два комплемента представљање на негативан цео број . Додате 1 до резултујућа вредност да стекну репрезентацију два комплемента .

Тхе кодирање комплемента два у Ц може представљати потписани цели бројеви и може да обавља брзе аритметичке операције. Једна од предности коришћења комплемента двоје је способност да се ради додатак и одузимање користећи исте бинарне операције као и за бројеве без предзнака.

Тхе бинарни бројеви сабирају се као цели бројеви без предзнака при сабирању комплемента два. Извођење са локације главни критични бит се само занемарује. Због ове чињенице руковање потписани бројеви другачије није неопходно, а сабирање постаје једноставно.

Размислите о додавању -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 .

Закључак:

У Ц, тхе 2с цомплемент је бинарни приказ негативног броја који се ствара додавањем јединице на 1с допуна . Компјутерски системи често користе ову идеју за представљање потписаних бројева и ефикасно извршавање аритметичких операција.

Да бисте добили 2с цомплемент бинарног целог броја, прво се мора одредити 1с допуна броја окретањем битова. Након тога, репрезентација в 2с цомплемент се добија помоћу додајући један до 1с допуна . Тхе најважнији бит (МСБ) функционисаће као знаковни бит изражавајући да ли је број позитивним или негативан .

Израчунавање 2с цомплемент за дати бинарни цео број приказан је у приложеном Ц програму. Од корисника се тражи да унесе оба бинарни број и број битова. Након тога, програм ради потребне процедуре за добијање комплемента 1с, а затим и 2с цомплемент . Затим се приказују налази.

У рачунарској науци и програмирању, кључно је разумети 2с цомплемент репрезентација јер омогућава ефикасно руковање негативним вредностима израженим у бинарном облику. Чини сабирање, одузимање , и логичке операције једноставније за оба позитивним и негативни бројеви . Распон од репрезентативни цели бројеви је симетрично око нула због 2с цомплемент представљање, што га чини погодним за различите нумеричке операције.

Програмери могу да спроводе аритметичке операције, раде са бинарним подацима и дизајнирају алгоритме користећи предписане целе бројеве у Ц и другим програмским језицима тако што разумеју идеју комплемента 2с и правилно је користе.