Related Articles

# Represent a number N in base -2

• Last Updated : 23 Jul, 2021

Given an integer N, the task is to find base -2 representation of the number N in the form of a string, such that S0 * (- 2)0 + S1 * (- 2)1 + … + Sk * (- 2)k = N. The string should only consist of 0s and 1s and unless the string is equal to zero, the initial character should be 1.

Examples:

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

Input: N = -9
Output: 1011
Explanation: 1011 is -2 representation of -9
(-2)0+ (-2)1+ (-2)3 = 1+ (-2) + (-8) = -9

Input: N = -7
Output: 1001

Approach: Follow the steps below to solve the problem:

• Initialize an empty string S.
• Iterate from N, until N is greater than zero.
• If N is even, append ‘0‘ in front of S and divide N by -2.
• Otherwise, append ‘1‘ in front of S, and decrement N by 1, and then divide N by -2.
• If the string S is empty, then return ‘0
• Finally, return the string S.

Below is the implementation of the above approach:

## C++

 `// C++ Program for above approach``#include ``using` `namespace` `std;` `// Function to convert N to``// equivalent representation in base -2``string BaseConversion(``int` `N)``{` `    ``// Stores the required answer``    ``string s = ``""``;` `    ``// Iterate until N is``    ``// not equal to zero``    ``while` `(N != 0) {` `        ``// If N is Even``        ``if` `(N % 2 == 0) {` `            ``// Add char '0' in``            ``// front of string``            ``s = ``"0"` `+ s;``        ``}``        ``else` `{` `            ``// Add char '1' in``            ``// front of string``            ``s = ``"1"` `+ s;` `            ``// Decrement N by 1``            ``N--;``        ``}` `        ``// Divide N by -2``        ``N /= -2;``    ``}` `    ``// If string is empty,``    ``// that means N is zero``    ``if` `(s == ``""``) {` `        ``// Put '0' in string s``        ``s = ``"0"``;``    ``}``    ``return` `s;``}` `// Driver Code``int` `main()``{` `    ``// Given Input``    ``int` `N = -9;` `    ``// Function Call``    ``cout << BaseConversion(N);``    ``return` `0;``}`

## Java

 `// Java Program for above approach``class` `GFG {``    ``// Function to convert N to``    ``// equivalent representation in base -2``    ``public` `static` `String BaseConversion(``int` `N) {` `        ``// Stores the required answer``        ``String s = ``""``;` `        ``// Iterate until N is``        ``// not equal to zero``        ``while` `(N != ``0``) {` `            ``// If N is Even``            ``if` `(N % ``2` `== ``0``) {` `                ``// Add char '0' in``                ``// front of string``                ``s = ``"0"` `+ s;``            ``} ``else` `{` `                ``// Add char '1' in``                ``// front of string``                ``s = ``"1"` `+ s;` `                ``// Decrement N by 1``                ``N--;``            ``}` `            ``// Divide N by -2``            ``N /= -``2``;``        ``}` `        ``// If string is empty,``        ``// that means N is zero``        ``if` `(s == ``""``) {` `            ``// Put '0' in string s``            ``s = ``"0"``;``        ``}``        ``return` `s;``    ``}` `    ``// Driver Code``    ``public` `static` `void` `main(String args[]) {` `        ``// Given Input``        ``int` `N = -``9``;` `        ``// Function Call``        ``System.out.println(BaseConversion(N));``    ``}` `}` `// This code is contributed by _saurabh_jaiswal.`

## Python3

 `# Python Program for the above approach` `# Function to convert N to``# equivalent representation in base -2``def` `BaseConversion(N):` `    ``# Stores the required answer``    ``s ``=` `""` `    ``# Iterate until N is``    ``# not equal to zero``    ``while` `(N !``=` `0``):` `        ``# If N is Even``        ``if` `(N ``%` `2` `=``=` `0``):` `            ``# Add char '0' in``            ``# front of string``            ``s ``=` `"0"` `+` `s` `        ``else``:` `            ``# Add char '1' in``            ``# front of string``            ``s ``=` `"1"` `+` `s` `            ``# Decrement N by 1``            ``N ``-``=` `1` `        ``# Divide N by -2``        ``N ``/``=` `-``2` `    ``# If string is empty,``    ``# that means N is zero``    ``if` `(s ``=``=` `""):` `        ``# Put '0' in string s``        ``s ``=` `"0"` `    ``return` `s`  `# Driver Code` `# Given Input``N ``=` `-``9` `# Function Call``print``(BaseConversion(N))` `# This code is contributed by _saurabh_jaiswal`

## C#

 `// C# Program for above approach``using` `System;``using` `System.Collections.Generic;` `class` `GFG{` `// Function to convert N to``// equivalent representation in base -2``static` `string` `BaseConversion(``int` `N)``{` `    ``// Stores the required answer``    ``string` `s = ``""``;` `    ``// Iterate until N is``    ``// not equal to zero``    ``while` `(N != 0) {` `        ``// If N is Even``        ``if` `(N % 2 == 0) {` `            ``// Add char '0' in``            ``// front of string``            ``s = ``"0"` `+ s;``        ``}``        ``else` `{` `            ``// Add char '1' in``            ``// front of string``            ``s = ``"1"` `+ s;` `            ``// Decrement N by 1``            ``N--;``        ``}` `        ``// Divide N by -2``        ``N /= -2;``    ``}` `    ``// If string is empty,``    ``// that means N is zero``    ``if` `(s == ``""``) {` `        ``// Put '0' in string s``        ``s = ``"0"``;``    ``}``    ``return` `s;``}` `// Driver Code``public` `static` `void` `Main()``{` `    ``// Given Input``    ``int` `N = -9;` `    ``// Function Call``    ``Console.Write(BaseConversion(N));``}``}` `// This code is contributed by bgangwar59.`

## Javascript

 ``
Output:
`1011`

Time Complexity: O(N)
Auxiliary Space: O(1)

My Personal Notes arrow_drop_up