Рубрики

Программа для добавления двух двоичных строк

Если даны две двоичные строки, вернуть их сумму (также двоичную строку).

Пример:

Input:  a = "11", b = "1"
Output: "100" 

Мы настоятельно рекомендуем вам свернуть браузер и сначала попробовать это самостоятельно.
Идея состоит в том, чтобы начать с последних символов двух строк и вычислить сумму цифр один за другим. Если сумма становится больше 1, сохраняйте перенос для следующих цифр.

C ++

// C ++ программа для добавления двух двоичных строк
#include<bits/stdc++.h>

using namespace std;

  
// Эта функция добавляет две двоичные строки и возвращает
// результат в виде третьей строки
string addBinary(string a, string b)
{

    string result = ""; // Инициализировать результат

    int s = 0;          // Инициализировать сумму цифр

  

    // Обходим обе строки, начиная с последней

    // персонажи

    int i = a.size() - 1, j = b.size() - 1;

    while (i >= 0 || j >= 0 || s == 1)

    {

        // Вычисляем сумму последних цифр и переносим

        s += ((i >= 0)? a[i] - '0': 0);

        s += ((j >= 0)? b[j] - '0': 0);

  

        // Если текущая сумма цифр равна 1 или 3, добавьте 1 к результату

        result = char(s % 2 + '0') + result;

  

        // Вычислить перенос

        s /= 2;

  

        // Перейти к следующим цифрам

        i--; j--;

    }

    return result;

}

  
// Драйвер программы

int main()

{

    string a = "1101", b="100";

    cout << addBinary(a, b) << endl;

    return 0;

}

Джава

// Java-программа для добавления
// две двоичные строки

  

public class GFG {

  

    // Эта функция добавляет два

    // двоичные строки и возврат

    // результат в виде третьей строки

    static String addBinary(String a, String b)

    {

          

        // Инициализировать результат

        String result = ""

          

        // Инициализировать сумму цифр

        int s = 0;         

  

        // Обходим обе строки, начиная

        // из последних символов

        int i = a.length() - 1, j = b.length() - 1;

        while (i >= 0 || j >= 0 || s == 1)

        {

              

            // Вычисляем сумму последнего

            // цифры и перенос

            s += ((i >= 0)? a.charAt(i) - '0': 0);

            s += ((j >= 0)? b.charAt(j) - '0': 0);

  

            // Если текущая сумма цифр

            // 1 или 3, добавляем 1 к результату

            result = (char)(s % 2 + '0') + result;

  

            // Вычислить перенос

            s /= 2;

  

            // Перейти к следующим цифрам

            i--; j--;

        }

          

    return result;

    }

  

    // Код диска

    public static void main(String args[])

    {

        String a = "1101", b="100";

          

        System.out.print(addBinary(a, b));

    }

}

  
// Этот код предоставлен Sam007.

python3

# Python Решение вышеуказанной проблемы:

  
# Эта функция добавляет два двоичных файла
# строки возвращают полученную строку

def add_binary_nums(x, y):

        max_len = max(len(x), len(y))

  

        x = x.zfill(max_len)

        y = y.zfill(max_len)

          

        # инициализировать результат

        result = ''

          

        # инициализировать перенос

        carry = 0

  

        # Пройти строку

        for i in range(max_len - 1, -1, -1):

            r = carry

            r += 1 if x[i] == '1' else 0

            r += 1 if y[i] == '1' else 0

            result = ('1' if r % 2 == 1 else '0') + result

            carry = 0 if r < 2 else 1     # Рассчитать перенос.

          

        if carry !=0 : result = '1' + result

  

        return result.zfill(max_len)

  
# Код драйвера

print(add_binary_nums('1101', '100'))

  
# Этот код добавлен
# Ананд Хатри

C #

// C # программа для добавления
// две двоичные строки

using System;

  

class GFG {

      

    // Эта функция добавляет два

    // двоичные строки и возврат

    // результат в виде третьей строки

    static string addBinary(string a, 

                            string b)

    {

          

        // Инициализировать результат

        string result = ""

          

        // Инициализировать сумму цифр

        int s = 0;         

  

        // Обходим обе строки, начиная

        // из последних символов

        int i = a.Length - 1, j = b.Length - 1;

        while (i >= 0 || j >= 0 || s == 1)

        {

              

            // Вычисляем сумму последнего

            // цифры и перенос

            s += ((i >= 0)? a[i] - '0': 0);

            s += ((j >= 0)? b[j] - '0': 0);

  

            // Если текущая сумма цифр

            // 1 или 3, добавляем 1 к результату

            result = (char)(s % 2 + '0') + result;

  

            // Вычислить перенос

            s /= 2;

  

            // Перейти к следующим цифрам

            i--; j--;

        }

    return result;

    }

      
// Код драйвера

public static void Main()

{

    string a = "1101", b="100";

    Console.Write( addBinary(a, b));

}
}

  
// Этот код предоставлен Sam007

PHP

<?php
// PHP-программа для добавления двух двоичных строк

  
// Эта функция добавляет две двоичные строки
// и возвращаем результат как третью строку

function addBinary($a, $b)

{

    $result = ""; // Инициализировать результат

    $s = 0;     // Инициализировать сумму цифр

  

    // Обходим обе строки, начиная

    // из последних символов

    $i = strlen($a) - 1;

    $j = strlen($b) - 1;

    while ($i >= 0 || $j >= 0 || $s == 1)

    {

        // Вычисляем сумму последних цифр и переносим

        $s += (($i >= 0)? ord($a[$i]) - 

                          ord('0'): 0);

        $s += (($j >= 0)? ord($b[$j]) - 

                          ord('0'): 0);

  

        // Если текущая сумма цифр равна 1 или 3,

        // добавить 1 к результату

        $result = chr($s % 2 + ord('0')) . $result;

  

        // Вычислить перенос

        $s = (int)($s / 2);

  

        // Перейти к следующим цифрам

        $i--; $j--;

    }

    return $result;

}

  
// Код драйвера

$a = "1101";

$b = "100";

echo addBinary($a, $b);

  
// Этот код предоставлен mits
?>


Выход:

10001

Спасибо Gaurav Ahirwar за предложенное выше решение. Пожалуйста, напишите комментарии, если вы обнаружите что-то неправильное, или вы хотите поделиться дополнительной информацией по обсуждаемой теме

Рекомендуемые посты:

Программа для добавления двух двоичных строк

0.00 (0%) 0 votes