相关疑难解决方法(0)

将数字除以3而不使用*,/,+, - ,%运算符

你会如何除以3为数字,没有使用*,/,+,-,%,运营商?

号码可以是签名或未签名.

c math division divide

678
推荐指数
25
解决办法
14万
查看次数

为什么在C/C++中使用div或ldiv?

是否有特定的理由使用ldiv或div而不是'/'或'%'来划分/模拟两个变量?

c c++

31
推荐指数
4
解决办法
3412
查看次数

C中的Python式整数除法和模数

在Python和Ruby中,带符号的整数除法向负无穷大截断,有符号整数模数与第二个操作数具有相同的符号:

>>> (-41) / 3
-14
>>> (-41) % 3
1
Run Code Online (Sandbox Code Playgroud)

但是,在C和Java中,带符号的整数除法截断为0,有符号整数模数与第一个操作数的符号相同:

printf("%d\n", (-41) / 3); /* prints "-13" */
printf("%d\n", (-41) % 3); /* prints "-2" */
Run Code Online (Sandbox Code Playgroud)

在C和Python中执行相同类型的除法和模数的最简单,最有效的方法是什么?

c c++ java division modulo

24
推荐指数
2
解决办法
7912
查看次数

div函数有用吗(stdlib.h)?

在C,C++(stdlib.h)中有一个名为div的函数

div_t div(int numer, int denom);

typedef struct _div_t
{
  int quot;
  int rem;
} div_t;
Run Code Online (Sandbox Code Playgroud)

但是C,C++有/和%运算符.

我的问题是:" 当有/和%运算符时,div函数有用吗?"

c c++ integer-division

16
推荐指数
4
解决办法
5041
查看次数

glibc`div()`代码中的错误?

如" 在C++中使用负数进行整数除法 "中所述,在C99之前的C中(即在C89中)和在C++之前的C++中(即在C++ 98和C++ 03中),用于整数除法计算,其中两个操作数都是负数,余数的符号(或等效地,商的舍入方向)是实现定义的.

然后是标准函数std::div,它被指定为将商截断为零(即,余数与被除数(分子)具有相同的符号)(例如,参见"div()库函数的目的是什么?"的答案.

这是glibc的div()(源代码)代码(也引用" Is div function useful(stdlib.h)? "):

(注:div_t定义为:

typedef struct
  {
    int quot;
    int rem;
  } div_t;
Run Code Online (Sandbox Code Playgroud)

- 结束说明.)

/* Return the `div_t' representation of NUMER over DENOM.  */
div_t
div (numer, denom)
     int numer, denom;
{
  div_t result;

  result.quot = numer / denom;
  result.rem = numer % denom;

  /* The ANSI standard says that |QUOT| <= |NUMER / DENOM|, where …
Run Code Online (Sandbox Code Playgroud)

c c++ implementation glibc integer-division

7
推荐指数
1
解决办法
355
查看次数

使用带无符号整数的div

C++标准提供div(int,int),但不提供udiv(unsigned int,unsigned int).

如果我天真地在这个函数中使用无符号整数,我可以看到这会对分子中大于2 ^ 31 - 1的整数产生错误的结果.例如(带有4位半字节):

最大的4位半字节是15,1111二进制.作为有符号的半字节,这将代表-1.将15除以2得到7或0111,但将-1除以2得到0:0000.

是否有一种直接的方法来将div调整为无符号整数,或者我最好是编写自己的udiv,还是完全避免使用div和div类函数?

编辑/注意:在我的情况下,我正在使用unsigned long long ints,所以使用lldiv并不能解决问题.

c c++ division

7
推荐指数
1
解决办法
1508
查看次数

添加数字位

我必须构建一个方法来添加参数中给出的字符串的每个数字,直到只剩下1位数,例如1234 = (1+2+3+4) = 10 = (1+0) = 1.

起初,我认为递归调用或while循环应该没问题.但有更聪明的方法吗?也许使用模数?

1234 % 9 = 1这似乎有效...但不是:9%9不等于,9但它是0.

有没有办法在没有递归/ for/while的情况下构建这个函数?

java algorithm math

7
推荐指数
2
解决办法
706
查看次数

为什么%和fmod()都存在于C中

我今天在我的CS课上参加了一个测验并得到了关于模运算符错误的问题,因为我不知道C中%的可用性,我一直在使用fmod().为什么两者都存在?是一个更好/更快还是只处理不同的数据类型?

c math.h

6
推荐指数
2
解决办法
964
查看次数

标签 统计

c ×7

c++ ×5

division ×3

integer-division ×2

java ×2

math ×2

algorithm ×1

divide ×1

glibc ×1

implementation ×1

math.h ×1

modulo ×1