logo

Binārā skaitļa 1 un 2 papildinājums

Ja binārs skaitlis ir norādīts kā virkne, izdrukājiet tā 1 un 2 papildinājumus.

1 papildinājums Bināra skaitļa ir vēl viens binārs skaitlis, kas iegūts, pārslēdzot visus tajā esošos bitus, t.i., pārveidojot 0 bitu uz 1 un 1 bitu par 0. 1. komplementa formātā pozitīvie skaitļi paliek nemainīgi . Negatīvos skaitļus iegūst, ņemot pozitīvo ekvivalentu komplementu 1.



piemēram, +9 tiks attēlots kā 00001001 astoņu bitu apzīmējumā un -9 tiks attēlots kā 11110110, kas ir 00001001 1. papildinājums.

Piemēri:

1's complement of '0111' is '1000' 1's complement of '1100' is '0011'>

2 papildinājums Bināra skaitļa vērtība ir 1, kas pievienota binārā skaitļa 1 papildinājumam. Bināro skaitļu 2 komplementa attēlojumā MSB apzīmē zīmi ar “0”, ko izmanto plus zīmei, un “1”, ko izmanto mīnusa zīmei. atlikušie biti tiek izmantoti lieluma attēlošanai. pozitīvie lielumi tiek attēloti tādā pašā veidā kā zīmes bita vai 1 komplementa attēlojuma gadījumā. Negatīvos lielumus attēlo to pozitīvo ekvivalentu 2 papildinājums.



Piemēri:

javascript druka
2's complement of '0111' is '1001' 2's complement of '1100' is '0100'>

Vēl viens triks, lai atrastu divu papildinājumu:

1. darbība: Sāciet no vismazāk nozīmīga bita un virzieties pa kreisi, līdz atrodat 1. Kamēr neatrodat 1, biti paliek nemainīgi

2. darbība: Kad esat atradis 1, ļaujiet 1 tādam, kāds tas ir, un tagad



3. darbība: Apgrieziet visus atlikušos bitus 1.

Ilustrācija

Pieņemsim, ka mums jāatrod 100100 2s papildinājums

1. darbība: Travers un ļaujiet bitam palikt nemainīgam, līdz atrodat 1. Šeit x vēl nav zināms. Atbilde = xxxx00 -

2. darbība : Jūs atradāt 1. Lai paliek nemainīgs. Atbilde = xxx100

3. darbība: Apgrieziet visus atlikušos bitus 1. Atbilde = 011100.

Tādējādi 100100 2s papildinājums ir 011100.

1. ieteicamās prakses papildinājums Izmēģiniet to!

Papildinājumam mums vienkārši ir jāapgriež visi biti.
2. papildinājumam mēs vispirms atrodam vienu papildinājumu. Mēs šķērsojam viena papildinājumu, sākot no LSB (vismazāk nozīmīgais bits), un meklējam 0. Mēs apgriežam visus 1 (mainām uz 0), līdz atrodam 0. Visbeidzot, mēs apgriežam atrasto 0. Piemēram, 2 papildinājums 01000 ir 11000 (Ņemiet vērā, ka mēs vispirms atrodam 01000 papildinājumu kā 10111). Ja ir visi 1 (vienā papildinājumā), mēs pievienojam papildu 1 virknē. Piemēram, 2 papildinājums 000 ir 1000 (1 papildinājums 000 ir 111).

ātra šķirošana

Zemāk ir tā ieviešana.

C++




// C++ program to print 1's and 2's complement of> // a binary number> #include> using> namespace> std;> > // Returns '0' for '1' and '1' for '0'> char> flip(>char> c) {>return> (c ==>'0'>)?>'1'>:>'0'>;}> > // Print 1's and 2's complement of binary number> // represented by 'bin'> void> printOneAndTwosComplement(string bin)> {> >int> n = bin.length();> >int> i;> > >string ones, twos;> >ones = twos =>''>;> > >// for ones complement flip every bit> >for> (i = 0; i ones += flip(bin[i]); // for two's complement go from right to left in // ones complement and if we get 1 make, we make // them 0 and keep going left when we get first // 0, make that 1 and go out of loop twos = ones; for (i = n - 1; i>= 0; i--) { if (vieni[i] == '1') divi[i] = '0'; else { twos[i] = '1'; pārtraukums; } } // Ja nav pārtraukuma : visi ir 1 kā 111 vai 11111; // tādā gadījumā sākumā pievienojiet papildus 1 if (i == -1) divi = '1' + divi; cout<< '1's complement: ' << ones << endl; cout << '2's complement: ' << twos << endl; } // Driver program int main() { string bin = '1100'; printOneAndTwosComplement(bin); return 0; }>

>

>

Java




// Java program to print 1's and 2's complement of> // a binary number> > class> GFG> {> > >// Returns '0' for '1' and '1' for '0'> >static> char> flip(>char> c)> >{> >return> (c ==>'0'>) ?>'1'> :>'0'>;> >}> > >// Print 1's and 2's complement of binary number> >// represented by 'bin'> >static> void> printOneAndTwosComplement(String bin)> >{> >int> n = bin.length();> >int> i;> > >String ones =>''>, twos =>''>;> >ones = twos =>''>;> > >// for ones complement flip every bit> >for> (i =>0>; i { ones += flip(bin.charAt(i)); } // for two's complement go from right to left in // ones complement and if we get 1 make, we make // them 0 and keep going left when we get first // 0, make that 1 and go out of loop twos = ones; for (i = n - 1; i>= 0; i--) { if (ones.charAt(i) == '1') { twos = twos.substring(0, i) + '0' + twos.substring(i + 1); } else { twos = twos.substring(0, i) + '1' + twos.substring(i + 1); pārtraukums; } } // Ja nav pārtraukuma : visi ir 1 kā 111 vai 11111; // tādā gadījumā sākumā pievienojiet papildu 1 if (i == -1) { divi = '1' + divi; } System.out.println('1's papildinājums: ' + vieninieki);; System.out.println('2's papildinājums: ' + divi); } // Draivera kods public static void main(String[] args) { String bin = '1100'; printOneAndTwosComplement(bin); } } // Šo kodu pievienoja Rajput-Ji>

java virknes savienošana

>

>

Python3




# Python3 program to print 1's and 2's> # complement of a binary number> > # Returns '0' for '1' and '1' for '0'> def> flip(c):> >return> '1'> if> (c>=>=> '0'>)>else> '0'> > # Print 1's and 2's complement of> # binary number represented by 'bin'> def> printOneAndTwosComplement(>bin>):> > >n>=> len>(>bin>)> >ones>=> ''> >twos>=> ''> > ># for ones complement flip every bit> >for> i>in> range>(n):> >ones>+>=> flip(>bin>[i])> > ># for two's complement go from right> ># to left in ones complement and if> ># we get 1 make, we make them 0 and> ># keep going left when we get first> ># 0, make that 1 and go out of loop> >ones>=> list>(ones.strip(''))> >twos>=> list>(ones)> >for> i>in> range>(n>-> 1>,>->1>,>->1>):> > >if> (ones[i]>=>=> '1'>):> >twos[i]>=> '0'> >else>:> >twos[i]>=> '1'> >break> > >i>->=> 1> ># If No break : all are 1 as in 111 or 11111> ># in such case, add extra 1 at beginning> >if> (i>=>=> ->1>):> >twos.insert(>0>,>'1'>)> > >print>(>'1's complement: '>,>*>ones, sep>=> '')> >print>(>'2's complement: '>,>*>twos, sep>=> '')> > # Driver Code> if> __name__>=>=> '__main__'>:> >bin> => '1100'> >printOneAndTwosComplement(>bin>.strip(''))> > # This code is contributed> # by SHUBHAMSINGH10>

>

gulēt javascript

>

C#




// C# program to print 1's and 2's complement of> // a binary number> using> System;> > class> GFG> {> > >// Returns '0' for '1' and '1' for '0'> >static> char> flip(>char> c)> >{> >return> (c ==>'0'>) ?>'1'> :>'0'>;> >}> > >// Print 1's and 2's complement of binary number> >// represented by 'bin'> >static> void> printOneAndTwosComplement(String bin)> >{> >int> n = bin.Length;> >int> i;> > >String ones =>''>, twos =>''>;> >ones = twos =>''>;> > >// for ones complement flip every bit> >for> (i = 0; i { ones += flip(bin[i]); } // for two's complement go from right to left in // ones complement and if we get 1 make, we make // them 0 and keep going left when we get first // 0, make that 1 and go out of loop twos = ones; for (i = n - 1; i>= 0; i--) { if (vieni[i] == '1') { divi = divi. Apakšvirkne(0, i) + '0' + divi. Apakšvirkne(i + 1,twos.Length-( i+1)); } else { twos = twos.Substring(0, i) + '1' + twos.Substring(i + 1,twos.Length-(i+1)); pārtraukums; } } // Ja nav pārtraukuma : visi ir 1 kā 111 vai 11111; // tādā gadījumā sākumā pievienojiet papildus 1 if (i == -1) { divi = '1' + divi; } Console.WriteLine('1's papildinājums: ' + vieninieki);; Console.WriteLine('2's papildinājums: ' + divi); } // Draivera kods public static void Main(String[] args) { String bin = '1100'; printOneAndTwosComplement(bin); } } // Šo kodu ir pievienojis 29AjayKumar>

>

oops koncepcija java

>

Javascript




> > // Javascript program to print 1's and 2's complement of> // a binary number> > // Returns '0' for '1' and '1' for '0'> function> flip (c) {>return> (c ==>'0'>)?>'1'>:>'0'>;}> > // Print 1's and 2's complement of binary number> // represented by 'bin'> function> printOneAndTwosComplement(bin)> {> >var> n = bin.length;> >var> i;> > >var> ones, twos;> >ones = twos =>''>;> > >// for ones complement flip every bit> >for> (i = 0; i ones += flip(bin[i]); // for two's complement go from right to left in // ones complement and if we get 1 make, we make // them 0 and keep going left when we get first // 0, make that 1 and go out of loop twos = ones; twos = twos.split('') for (i = n - 1; i>= 0; i--) { if (vieni[i] == '1') divi[i] = '0'; else { twos[i] = '1'; pārtraukums; } } twos = twos.join('') // Ja nav pārtraukuma : visi ir 1 kā 111 vai 11111; // tādā gadījumā sākumā pievienojiet papildus 1 if (i == -1) divi = '1' + divi; document.write( '1's papildinājums: ' + vieninieki + ' '); document.write( '2's papildinājums: ' + divi + ' '); } // Draivera programma var bin = '1100'; printOneAndTwosComplement(bin);>>

> 

1's complement: 0011 2's complement: 0100>

Laika sarežģītība: O(n)

Palīgtelpa: O(1)