C

时间:2019-03-08 03:35:11

标签: c bit-manipulation

因此,我尝试对无符号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对。在不使用模数,+,-,*,/等算术运算的情况下,如何实现整数除法。

0 个答案:

没有答案