gpt4 book ai didi

c - 查找数字的 n 位长度 2s 补码表示

转载 作者:行者123 更新时间:2023-11-30 18:38:04 25 4
gpt4 key购买 nike

我正在编写一个带参数的函数:

int nbit2s(long int x, long int n){

}

我正在寻找 64 位数字 x,并查找 n 位长度的 2 位表示是否可能。然而,我仅限于使用按位运算符,并且不能使用 >= <= 等运算符和条件语句

例如,nbit2s(5,3) 返回 0,因为表示是不可能的。

我不是在寻找任何代码,只是在寻找想法,到目前为止我的想法是:

  1. 获取数字 n 并将其转换为其二进制表示形式。
  2. 将二进制表示左移 64-n 次以获得 MSB 并将其存储在变量移位中3.右移64-n得到前导位并存入shift
  3. 将原始数字与 W 进行异或,如果为 1,则为 TRUE,如果为 0,则为 FALSE。

我觉得这是正确的,但如果有人可以解释更好的方法或我可能犯的任何错误,那就太好了。

最佳答案

如果我正确理解您的问题,您想确定整数x是否可以表示为具有n位或更少位的二进制数。

测试此问题的一个简单方法是使用按位 AND 运算符屏蔽掉高于最大值的所有位,然后查看屏蔽后的整数是否与原始整数相同。

示例:

bool nbit2s(uint64_t x, int n) {
return (x & (1ULL << n) - 1) == x;
}

关于c - 查找数字的 n 位长度 2s 补码表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35077325/

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