Mips 用移位法除法的麻烦

Mips 用移位法除法的麻烦,mips,division,Mips,Division,我在用MIPS实现除法算法时遇到了一些问题,我假设它与我移位和设置最低有效位的方式有关,但我不能完全确定 算法如下所示: 1) 从余数寄存器中减去除数寄存器,并将结果放入余数寄存器 2a)如果余数>=0,将商寄存器向左移位,将最右边的新位设置为1 2b)如果余数我觉得算法的描述有点不对劲。这就是C语言中工作的8位除法算法: unsigned char Q,R; unsigned char N=12,D=5; int i; Q = 0; R = 0; for (i = 0; i < 8;

我在用MIPS实现除法算法时遇到了一些问题,我假设它与我移位和设置最低有效位的方式有关,但我不能完全确定

算法如下所示:

1) 从余数寄存器中减去除数寄存器,并将结果放入余数寄存器

2a)如果余数>=0,将商寄存器向左移位,将最右边的新位设置为1


2b)如果余数我觉得算法的描述有点不对劲。这就是C语言中工作的8位除法算法:

unsigned char Q,R;
unsigned char N=12,D=5;
int i;

Q = 0;
R = 0;
for (i = 0; i < 8; i++) {
    R <<= 1;
    R |= (N & 0x80) >> 7;
    N <<= 1;
    Q <<= 1;
    if (R >= D) {
        R -= D;
        Q |= 1;
    }
}
无符号字符Q,R;
无符号字符N=12,D=5;
int i;
Q=0;
R=0;
对于(i=0;i<8;i++){
r7;

N(N&0x80)指的是什么?然后我会向右移动7吗?这是一个按位且
1
unsigned char Q,R;
unsigned char N=12,D=5;
int i;

Q = 0;
R = 0;
for (i = 0; i < 8; i++) {
    R <<= 1;
    R |= (N & 0x80) >> 7;
    N <<= 1;
    Q <<= 1;
    if (R >= D) {
        R -= D;
        Q |= 1;
    }
}