Untitled
Anonymous
plain_text
02/22/2026 8:59 AM
2.2 KB
8
Indexable
#include <stdio.h>
#define n 4
void LS(int A[], int Q[])
{
for (int i = n - 1; i > 0; i--)
A[i] = A[i - 1];
A[0] = Q[n - 1];
for (int i = n - 1; i > 0; i--)
Q[i] = Q[i - 1];
Q[0] = 0;
}
void binaryAdd(int A[], int B[])
{
int carry = 0;
for (int i = 0; i < n; i++)
{
int sum = A[i] + B[i] + carry;
A[i] = sum % 2;
carry = sum / 2;
}
}
int isnegative(int A[])
{
return A[n - 1];
}
void loadBinary(int num, int arr[])
{
for (int i = 0; i < n; i++)
{
arr[i] = num % 10;
num /= 10;
}
}
void generateM1(int M[], int M1[])
{
for (int i = 0; i < n; i++)
M1[i] = (M[i] == 0) ? 1 : 0;
int carry = 1;
for (int i = 0; i < n; i++)
{
int sum = M1[i] + carry;
M1[i] = sum % 2;
carry = sum / 2;
}
}
int main()
{
int m, q;
int A[n] = {0}, Q[n], M[n], M1[n];
int N;
printf("Enter dividend in binary: ");
scanf("%d", &q);
printf("Enter divisor in binary: ");
scanf("%d", &m);
loadBinary(q, Q);
loadBinary(m, M);
generateM1(M, M1);
N = n;
while (N > 0)
{
LS(A, Q);
binaryAdd(A, M1);
if (isnegative(A))
{
Q[0] = 0;
binaryAdd(A, M);
}
else
{
Q[0] = 1;
}
N = N - 1;
}
printf("\nFinal Quotient (Q): ");
for (int i = n - 1; i >= 0; i--)
printf("%d", Q[i]);
printf("\nFinal Remainder (A): ");
for (int i = n - 1; i >= 0; i--)
printf("%d", A[i]);
return 0;
}Editor is loading...
Leave a Comment