برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی — به زبان ساده
در این مطلب، روش نوشتن برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی بیان و سپس، پیادهسازیهای آن در زبانهای برنامهنویسی گوناگون شامل ++C ،C، «جاوا» (Java)، «پایتون» (Python)، «سیشارپ» (#C) و «پیاچپی» (PHP) انجام شده است. در واقع، هدف، نوشتن تابع ()Add است که مجموع دو عدد صحیح را باز میگرداند.
تابع، نباید از هیچ یک از عملگردهای حسابی (+، ++، – و دیگر موارد) استفاده کند. مجموع دو بیت را میتوان با انجام عمل XOR (^) روی دو بیت به دست آورد. بیت حامل را میتوان با انجام عمل AND (&) دو بیت به دست آورد. آنچه در بالا بیان شد، منطق یک نیم جمع کننده است که برای محاسبه مجموع دو بیت مجرد قابل استفاده است. میتوان این منطق را برای اعداد صحیح توسعه داد. اگر x و y بیتهای ۱ (Set Bit) در موقعیت مشابهی داشته باشند، انجام XOR (^) بیتی (Bitwise) متغیرهای x و y، مجموع x و y را ارائه میکند. برای ترکیب بیتهای ۱ (Set Bits) مشترک نیز، AND (&) بیتی مورد استفاده قرار میگیرد. AND بیتی x و y همه بیتهای حامل را به دست میدهد. x & y << 1 محاسبه میشود و برای به دست آوردن نتیجه مورد نظر، به x ^ y اضافه میشود.
برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی در ++C
// C++ Program to add two numbers
// without using arithmetic operator
#include <bits/stdc++.h>
using namespace std;
int Add(int x, int y)
{
// Iterate till there is no carry
while (y != 0)
{
// carry now contains common
//set bits of x and y
int carry = x & y;
// Sum of bits of x and y where at
//least one of the bits is not set
x = x ^ y;
// Carry is shifted by one so that adding
// it to x gives the required sum
y = carry << 1;
}
return x;
}
// Driver code
int main()
{
cout << Add(15, 32);
return 0;
}
// This code is contributed by rathbhupendra
برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی در C
// C Program to add two numbers
// without using arithmetic operator
#include<stdio.h>
int Add(int x, int y)
{
// Iterate till there is no carry
while (y != 0)
{
// carry now contains common
//set bits of x and y
int carry = x & y;
// Sum of bits of x and y where at
//least one of the bits is not set
x = x ^ y;
// Carry is shifted by one so that adding
// it to x gives the required sum
y = carry << 1;
}
return x;
}
int main()
{
printf("%d", Add(15, 32));
return 0;
}
برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی در جاوا
// Java Program to add two numbers
// without using arithmetic operator
import java.io.*;
class GFG
{
static int Add(int x, int y)
{
// Iterate till there is no carry
while (y != 0)
{
// carry now contains common
// set bits of x and y
int carry = x & y;
// Sum of bits of x and
// y where at least one
// of the bits is not set
x = x ^ y;
// Carry is shifted by
// one so that adding it
// to x gives the required sum
y = carry << 1;
}
return x;
}
// Driver code
public static void main(String arg[])
{
System.out.println(Add(15, 32));
}
}
// This code is contributed by Anant Agarwal.
برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی در پایتون ۳
# Python3 Program to add two numbers
# without using arithmetic operator
def Add(x, y):
# Iterate till there is no carry
while (y != 0):
# carry now contains common
# set bits of x and y
carry = x & y
# Sum of bits of x and y where at
# least one of the bits is not set
x = x ^ y
# Carry is shifted by one so that
# adding it to x gives the required sum
y = carry << 1
return x
print(Add(15, 32))
# This code is contributed by
# Smitha Dinesh Semwal
برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی در #C
// C# Program to add two numbers
// without using arithmetic operator
using System;
class GFG
{
static int Add(int x, int y)
{
// Iterate till there is no carry
while (y != 0)
{
// carry now contains common
// set bits of x and y
int carry = x & y;
// Sum of bits of x and
// y where at least one
// of the bits is not set
x = x ^ y;
// Carry is shifted by
// one so that adding it
// to x gives the required sum
y = carry << 1;
}
return x;
}
// Driver code
public static void Main()
{
Console.WriteLine(Add(15, 32));
}
}
// This code is contributed by vt_m.
برنامه محاسبه مجموع دو عدد بدون عملگرهای ریاضی در PHP
<?php
// PHP Program to add two numbers
// without using arithmetic operator
function Add( $x, $y)
{
// Iterate till there is
// no carry
while ($y != 0)
{
// carry now contains common
//set bits of x and y
$carry = $x & $y;
// Sum of bits of x and y where at
//least one of the bits is not set
$x = $x ^ $y;
// Carry is shifted by one
// so that adding it to x
// gives the required sum
$y = $carry << 1;
}
return $x;
}
// Driver Code
echo Add(15, 32);
// This code is contributed by anuj_67.
?>
خروجی
خروجی قطعه کدهای بالا، برای ۱۵ و ۳۲ برابر است با:
۴۷
روش پیادهسازی «بازگشتی» (Recursive) رویکرد بالا، در ادامه بیان شده است.
int Add(int x, int y)
{
if (y == 0)
return x;
else
return Add( x ^ y, (x & y) << 1);
اگر نوشته بالا برای شما مفید بوده است، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای برنامهنویسی
- آموزش برنامهنویسی C++
- مجموعه آموزشهای ریاضیات
- کد جمع کردن چند جملهای ها — راهنمای کاربردی
- برنامه ضرب چند جملهایها — راهنمای کاربردی
مجموعه: برنامه نویسی, مهندسی کامپیوتر برچسب ها: ++C, Java, PHP, python, برنامه جم, پایتون, پی اچ پی, جاوا, زبان سی, سی پلاس پلاس, سی شارپ, عملگر حسابی, عملگر منطقی, عملگی بیتی, کد محاسبه مجموع, محاسبه مجموع