C# 直接减去两个八进制数而不转换为十进制数

C# 直接减去两个八进制数而不转换为十进制数,c#,logic,octal,number-systems,C#,Logic,Octal,Number Systems,如何做减法 决定停止条件-希望while循环继续,直到数字a、b和进位都变为零。换句话说,条件应该是a | | b | |进位 将下一个数字加到总和上-由于结果被编码为十进制,因此需要将数字d乘以下一个连续的十次方。一种简单的方法是添加一个新的变量m,该变量从1开始,每次迭代乘以10 有人能帮我做减法吗 static int addition(int num1, int num2) { int sum = 0, digit = 0, carry = 0,

如何做减法

决定停止条件-希望while循环继续,直到数字a、b和进位都变为零。换句话说,条件应该是a | | b | |进位

将下一个数字加到总和上-由于结果被编码为十进制,因此需要将数字d乘以下一个连续的十次方。一种简单的方法是添加一个新的变量m,该变量从1开始,每次迭代乘以10

有人能帮我做减法吗

static int addition(int num1, int num2)
        {
            int sum = 0, digit = 0, carry = 0, digit_rank = 1;

            // Calculate the sum
            while (num1 > 0 || num2 > 0 || carry > 0)
            {
                // Calculate the digit
                digit = num1 % 10 + num2 % 10 + carry;

                // Determine if you should carry or not
                if (digit > 7)
                {
                    carry = 1;
                    digit %= 8;
                }
                else
                    carry = 0;

                // Add the digit at the beggining of the sum
                sum += digit * digit_rank;
                digit_rank *= 10;

                // Get rid of the digits of a and b we used
                num1 /= 10;
                num2 /= 10;
            }
            return sum;
        }
#包括
#包括
#包括
使用名称空间std;
int main(int argc,字符**argv)
{
int a[4]={5,6,0,0},b[4]={3,4,5,7},c[4]={0};
int点=0;
对于(int i=3;i>-1;i--)
{
如果(a[i]==0)
{
对于(int j=3;j>-1;j--)
{
如果(a[j]!=0&&point==0)
{
a[j]=a[j]-1;
点=1;
c[i]=8-b[i];
打破
}
c[i]=7-b[i];
}
}
其他的
{
c[i]=a[i]-b[i];
}
}
对于(int i=0;i
#包括
#包括
int main()
{
INTA、b、c;
printf(“输入第一个数字:”);
scanf(“%o”和“&a”);
printf(“输入第二个数字:”);
scanf(“%o”和“b”);
c=a-b;
printf(“八进制减法=%o”,c);
}

没有“十进制”或“八进制”数字,只有数字的十进制或八进制字符串表示形式。数字只是一个数字。请您解释一下您的方法好吗?请不要破坏您的帖子,为他人做更多的工作。通过在Stack Exchange(SE)上发布网络中,您已在a下授予SE分发内容的不可撤销权利(即,无论您未来的选择如何)。根据SE策略,非故意破坏版本将被分发。因此,任何故意破坏行为都将被恢复。请参阅:。如果允许删除,则会出现“删除”按钮,但它仅在浏览器中,而不是在移动应用程序中。
#include <iostream>
#include <cstdlib>
#include <string>
using namespace std;
 
int main(int argc, char ** argv)
{
    int a[4]={5,6,0,0}, b[4]={3,4,5,7}, c[4]={0}; 
    int point=0; 
    for(int i=3;i>-1;i--) 
    {
        if(a[i]==0)
        {
            for(int j=3;j>-1;j--)   
            {
                if(a[j]!=0 && point==0) 
                {
                    a[j]=a[j]-1; 
                    point=1; 
                    c[i]=8-b[i]; 
                    break; 
                }
                c[i]=7-b[i];
            }
        }
        else
        {
            c[i]=a[i]-b[i]; 
        }
    }
    for(int i=0;i<4;i++)
    {
        cout<<c[i];
    }
}
#include <stdio.h>
#include <stdlib.h>

int main()
{
     int a, b ,c;
     printf("Enter 1st number: ");
     scanf("%o",&a);
     printf("Enter 2nd number: ");
     scanf("%o",&b);
     c=a-b;
     printf("octal subtraction=%o", c);
}