|
1
95
这是我不久前为好玩写的东西。它使用了 two's complement 使用带进位的重复移位表示和实现加法,主要实现加法方面的其他运算符。
|
|
|
2
51
或者,与Jason的按位方法不同,您可以并行计算许多位—对于大数字,这应该运行得更快。在每个步骤中,计算出执行部分和求和部分。您试图将进位添加到和中,这可能导致再次进位-因此是循环。
当你加1和3时,两个数字都有1位的集合,所以1+1的和进位。下一步你加2到2,这等于正确的和4。会导致出口
或者更复杂的例子
编辑: 为了使它能很容易地处理有符号的数字,您需要在a和b上引入一个上限。
试穿
看到一个位在整个范围内进位并溢出32次迭代
|
|
3
20
|
|
|
4
17
你可以改变 adder circuit 变成一个算法。它们只执行位运算=) |
|
|
5
7
好吧,用布尔运算符实现等价物是非常简单的:使用进位(和)进行逐位求和(XOR)。这样地:
|
|
|
6
6
你已经得到了一些操纵的答案。这里有一些不同的东西。
在C中,
因此,我们可以定义一个自定义的添加函数(不显式使用算术运算符),从而:
或者,如果我们想避免这个技巧,并且通过算术运算符,它们包括
|
|
7
5
所有的算术运算都分解成位运算,在电子设备中使用与非门和或等门来实现。 |
|
|
8
5
对于无符号数,使用与第一节课中学习的相同的加法算法,但对于基数2而不是基数10。例如,3+2(基10),即基2中的11+10:
|
|
|
9
4
如果你觉得有喜剧性,总是有这种惊人的可怕的方法来添加两个(相对较小的)无符号整数。代码中没有算术运算符。 C中:
在C中,使用stdio(在Microsoft编译器上用_snprintf替换snprintf):
|
|
|
10
3
这是一个紧凑的C解决方案。有时递归比循环更可读。
|
|
|
11
1
|
|
12
1
|
|
|
13
1
|
|
14
0
以下是可行的。
|
|
15
0
这可以递归完成:
或迭代地:
|
|
|
16
0
不使用的实现加法、乘法的代码
|
|
17
0
这个问题问如何加上两个数字,所以我不明白为什么所有的解决方案都提供两个整数的加法?如果这两个数字是浮点数,即
对于浮点数,我认为应该将数字分解为其组成部分,即
|
|
|
18
-1
|
|
|
19
-1
有了上面给出的答案,可以用单行代码完成:
|
|
|
20
-1
我认为这段代码对于不带加号运算符的两个数字的加法有帮助
|
|
|
MaPo · Linux,设置锁定ICMP_过滤器选项 1 年前 |
|
Doohyeon Won · 内联函数上的奇怪现象?[关闭] 1 年前 |
|
|
Bobby · 复合字面值总是左值吗? 1 年前 |
|
9-Pin · C: 嵌套结构的堆栈内存分配 1 年前 |