gpt4 book ai didi

c - 家庭作业 - C 位谜题 - 使用 C 位操作执行 %(无循环、条件、函数调用等)

转载 作者:太空狗 更新时间:2023-10-29 15:30:02 26 4
gpt4 key购买 nike

我完全被困在如何做这个家庭作业问题上,正在寻找一两个提示来让我继续前进。我被限制为 20 次操作(= 不算在这 20 次中)。

我应该填写一个如下所示的函数:

    /* Supposed to do x%(2^n).
For example: for x = 15 and n = 2, the result would be 3.

Additionally, if positive overflow occurs, the result should be the
maximum positive number, and if negative overflow occurs, the result
should be the most negative number.
*/
int remainder_power_of_2(int x, int n){

int twoToN = 1 << n;

/* Magic...? How can I do this without looping? We are assuming it is a
32 bit machine, and we can't use constants bigger than 8 bits
(0xFF is valid for example).
However, I can make a 32 bit number by ORing together a bunch of stuff.
Valid operations are: << >> + ~ ! | & ^
*/

return theAnswer;
}

我在想也许我可以将 twoToN 移到左边...直到我以某种方式检查(没有 if/else)它大于 x,然后再移回右边一次。 .. 然后用 x... 异或它并重复?但是我只有 20 个操作!

最佳答案

提示:在十进制系统中以 10 的次方取模,您只需保留最后几位数字并将其他数字清零。例如。 12345 % 100 = 00045 = 45。嗯,在计算机中数字是二进制的。所以你必须使二进制数字(位)为空。因此,请查看各种位操作运算符(&|^)来执行此操作。

关于c - 家庭作业 - C 位谜题 - 使用 C 位操作执行 %(无循环、条件、函数调用等),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12148246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com