创建递归函数以返回xor操作结果的整数

时间:2012-03-21 00:28:48

标签: c binary simulation

按位异或(xor)运算可以应用于两个相应位之间的两个二进制数:

  • 1 xor 1 = 0
  • 1 xor 0 = 1
  • 0 xor 1 = 1
  • 0 xor 0 = 0

例如,1101011 xor 1010101 = 0111110

定义一个递归函数,该函数接受两个整数参数模拟两个输入二进制数,并将xor操作的结果作为整数返回。在主程序中调用并测试该功能。 (注意:结果的前面的零可能不会出现在显示屏上,这没关系)。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果您应该以十进制形式发送参数,那么这样的事情可能会起作用:

void recursiveXor( int a, int b ){

   if( 0 == a && 0 == b )
      return;

    int old = ( a % 2 ) ^ ( b % 2 );

    recursiveXor( a/2, b/2 );

    printf("%d", old ); //System.out.println( old ); if it is Java

}

如果参数以二进制表示(例如:recursiveXor(111, 1101)),则:

void recursiveXor( int a, int b ){

   if( 0 == a && 0 == b )
      return;

    int old = ( ( a%10 ) + ( b%10 ) ) % 2;

    recursiveXor( a/10, b/10 );

    printf("%d", old); //System.out.println( old ); if it is Java

}