 Open in App
Not now

# 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:

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
Related Articles