1 ' s ▁ and ▁ 2' s complement of a Binary Number | Returns '0' for '1' and '1' for '0' ; Print 1 ' s ▁ and ▁ 2' s complement of binary number represented by " bin " ; for ones complement flip every bit ; 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 ; If No break : all are 1 as in 111 or 11111 ; in such case , add extra 1 at beginning ; Driver program
function flip ( c ) { return ( c == ' ' ) ? ' ' : ' ' ; } function printOneAndTwosComplement ( bin ) { var n = bin . length ; var i ; var ones , twos ; ones = twos = " " ; for ( i = 0 ; i < n ; i ++ ) ones += flip ( bin [ i ] ) ; twos = ones ; twos = twos . split ( ' ' ) for ( i = n - 1 ; i >= 0 ; i -- ) { if ( ones [ i ] == ' ' ) twos [ i ] = ' ' ; else { twos [ i ] = ' ' ; break ; } } twos = twos . join ( ' ' ) if ( i == - 1 ) twos = ' ' + twos ; document . write ( " " + ones + " " ) ; document . write ( " " + twos + " " ) ; } var bin = " " ; printOneAndTwosComplement ( bin ) ;