在C中向数字添加1

时间:2014-08-05 11:18:31

标签: c bitwise-operators integer-arithmetic

我必须在C中添加一个数字。我必须在没有像'+','++'等算术运算符的情况下这样做。

我写了以下代码行。

int a = 1234;
int b = 1;
printf("%d", a ^ b);

这一点工作正常,直到达到整数限制,即32位是4294967295.但我在许多其他网站上看到他们执行相同的两个数字的AND,然后是XOR和左移。

请告知我的方法是否正确,因为我是C的新手。

3 个答案:

答案 0 :(得分:5)

您的方法不正确。您应该使用+在C:

中添加数字
int a = 1234;
int b = 1;
printf("%d\n", a + b); // Prints 1235

你说"这个工作正常,直到达到整数限制"关于你的方法,但你错了。当a是奇数时,^操作的结果是减1:

int a = 1235;
int b = 1;
printf("%d\n", a ^ b); // Prints 1234
printf("%d\n", a + b); // Prints 1236, using the correct operator

在这里,您可以看到您当前使用的方法对于奇数不正确。

答案 1 :(得分:1)

在这种方法中,你没有做到精确的添加。但它看起来像。

   a = 00000000 00000000 00000100 11010010
   b = 00000000 00000000 00000000 00000001
 ------------------------------------------
 a^b = 00000000 00000000 00000100 11010011
 ------------------------------------------
                                         ^ this bit is toggled

例如,当您尝试使用1234进行XOR 3时,您将获得输出为1233.因为XOR操作

   a = 00000000 00000000 00000100 11010010
   b = 00000000 00000000 00000000 00000011
 ------------------------------------------
 a^b = 00000000 00000000 00000100 11010001
 ------------------------------------------
                                        ^ here this bit is toggled.

当您使用XOR添加时,并不意味着您要添加。所以请记住这一点并进行必要的操作!

答案 2 :(得分:0)

^用于执行XOR操作,+用于执行"添加"操作。
我强烈建议+执行任何类型的添加内容,例如两个数字的总和,或减去一个数字和另一个数字的负数,或者增加某个数量的变量值。

此外,它可以准确地增加" 1"使用++一元运算符的变量值:x++相当于x = x + 1

此外,+=运算符可用,它将变量按右侧指定的数量递增:x += 1

如果幸运的话,可以选择任意一个运算符,比如说<OPER>,然后写一些表达式,比如x <OPER> <FREAK OPERAND>,从而获得&#34;添加1&#34的效果;变量。
但是,将这种方法概括为更复杂的情况可能很困难(例如,&#34;添加2&#34; 操作)。