相关疑难解决方法(0)

使用逐位运算符实现除法

如何使用逐位运算符实现除法(不只是除以2的幂)?

详细描述.

bit-manipulation bit

48
推荐指数
4
解决办法
9万
查看次数

不使用'/'的分部

任何人都可以告诉我一种有效的方法来执行除法操作而不使用'/'.我可以log(n)使用类似于二进制搜索的方法逐步计算整数值.

115/3 
57 * 3 > 115
28 * 3 < 115
47 * 3 > 115
.
.
.
38 * 3 is quotient value .....
Run Code Online (Sandbox Code Playgroud)

但还有其他更有效的方法吗?

algorithm bit-manipulation division

47
推荐指数
4
解决办法
7万
查看次数

使用位移除以10?

是否有可能通过使用纯位加法,减法除以10的无符号整数,也许繁衍?使用资源非常有限且速度慢的处理器.

math bit low-level integer-division micro-optimization

41
推荐指数
4
解决办法
5万
查看次数

检查一个数字是否可以被3整除

我需要找出一个数字是否可以被3整除而不使用%,/或者*.给出的提示是使用atoi()函数.知道怎么做吗?

division modulo integer-division

37
推荐指数
8
解决办法
2万
查看次数

有没有办法在没有模数/除法运算符的情况下编写"mod 31"?

如果操作数是2的幂,则可以在没有模数运算符或除法的情况下容易地获得数字的模数.在这种情况下,下面的公式成立:x % y = (x & (y ? 1)).在许多架构中,这通常很有效.可以这样做mod 31吗?

int mod31(int a){ return a % 31; };
Run Code Online (Sandbox Code Playgroud)

c bit-manipulation bitwise-operators modulus

8
推荐指数
3
解决办法
2850
查看次数

将74位整数转换为基数31

要生成UFI编号,我使用bitset大小为74.要执行UFI生成的第2步,我需要转换此数字:

9 444 732 987 799 592 368 290
(10000000000000000000000000000101000001000001010000011101011111100010100010)
Run Code Online (Sandbox Code Playgroud)

成:

DFSTTM62QN6DTV1
Run Code Online (Sandbox Code Playgroud)

通过将第一个表示转换为基数31并从表中获取等效的字符.

#define PAYLOAD_SIZE 74
// payload = binary of 9444732987799592368290
std::bitset<PAYLOAD_SIZE> bs_payload(payload);
/*
perform modulo 31 to obtain:
12(D), 14(F), 24(S), 25(T), 25, 19, 6, 2, 22, 20, 6, 12, 25, 27, 1
*/    
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用外部BigInteger库的情况下对我的bitset执行转换?

编辑:BigInteger即使是干杯和赫斯,我终于完成了一堂课.- 阿尔夫的解决方案就像一个魅力

c++ base-conversion bigint c++11 std-bitset

6
推荐指数
1
解决办法
578
查看次数

写一个程序来找到除以两个数字的余数,而不使用%运算符?在Java中

如何在不使用模运算符的情况下找到除以两个数的余数!! 我的老师给了我这个精确的练习,这是我在一门名为编程基础的课程中的第五讲.
我已经尝试过这个等式,

a%b = a - (a/b)*b
Run Code Online (Sandbox Code Playgroud)

但它总是返回零!

java

5
推荐指数
1
解决办法
5万
查看次数

在Javascript中获取没有modulo(%)运算符的余数,占用 - /+符号

对于家庭作业,我需要在使用内置模数(%)运算符将num1除以num2之后返回余数.我能够通过以下代码获得大多数测试,但我仍然坚持如何考虑给定数字的 - /+符号.我需要随身携带num1上的任何一个标志,如果num2是负数,也会返回一个正数 - 这让我想到了如何做到这一点...... :)任何清晰度都会非常感激!我不是在寻找这里的直接答案,更多的是我似乎错过了一些明显的东西......也许我需要一种新的方法?

    function modulo(num1, num2) {
      if (num1 === 0) {
        return 0;
      }
      if (num2 === 0 || isNaN(num1) || isNaN(num2)) {
        return NaN;
      }
      if (num1 < num2) {
        return num1;
      }
      if (num1 > 0 && num2 > 0) {
        var counter = num1;
      while (counter >= Math.abs(num2)) {
        counter = counter - num2;
      }
      return counter;
      }
    }
    var output = modulo(25, 4);
    console.log(output); // 1
Run Code Online (Sandbox Code Playgroud)

javascript modulo

4
推荐指数
2
解决办法
2240
查看次数