因此,我尝试对无符号short的二进制表示形式进行整数除法。例如:假设无符号短x = 5,则二进制数字表示为
1111. 7将是111。我希望能够找到1的位表示的对数。我的想法是使用如下位操作计算1的数量。
unsigned short divide(unsigned short input) {
unsigned short count = 0;
while (input != 0){
if ((input & 1) == 1)
count = count + 1;
input = input >> 1;
}
return count;
}
上面的代码用于获取二进制表示形式的1位总数。示例:在我的7中,由于二进制表示中有3个1,因此它将返回3。现在我只希望能够执行整数除法(例如3/2 = 1)来查找1对的数目。无符号短路的3/2将为1,因为只有1对1的位。如果为5,则为4/2 = 2。 2对。在不使用模数,+,-,*,/等算术运算的情况下,如何实现整数除法。