首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当用户输入3而不使用任何条件时如何打印7

当用户输入3而不使用任何条件时如何打印7
EN

Stack Overflow用户
提问于 2022-05-22 09:19:29
回答 1查看 38关注 0票数 2

因此,这里有一个问题,当用户输入3比它打印7作为输出,什么时候用户输入7比它打印3作为输出,但没有使用任何条件和循环。

这里是我的done.But,问题是我使用两个数字作为输入,但是我必须用一个输入来完成它。

代码语言:javascript
复制
void main() {
  print(mod(7, 3));
}

int mod(int num1, int num2) {
  //3*2 mod 7
  //7*2 mod 3
  int answer = (num1 * 2) % num2 + 1;
  return answer;
}

请帮助如何做this.You可以使用任何语言来解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2022-05-22 21:14:26

让我们看一下3和7:3的二进制表示形式是0...0011,7是0...0111,这意味着3和7之间唯一不同的位是第3位。因此,我们可以将3转换为7,反之亦然,只需“翻转”第3位。

“翻转一点”可以通过“独占-或”操作来完成。Xor是一种非常有用的操作(我最喜欢的操作之一):一种方法是考虑有数据输入和控件输入,如果控件输入为0,则数据输入保持不变,但如果控件输入为1,则数据输入被翻转(您可以绘制Xor的真值表以使自己相信这种解释)。当然,这只是考虑xor操作的一种方式,但在我们的情况下,它特别有用:我们想翻转第三位,并保持其他所有位不变。

C提供一个“逐位xor”操作( A ^ B),它对A和B的每一个位执行xor,因此,我们想要的是一个数字,作为控制号,第3位是1,所有其他位都是0:这个数字是4。

最后,我们可以使用这个函数将3转换为7,反之亦然,只需对输入应用Xor和4。

代码语言:javascript
复制
#include <stdio.h> 

int flip(int num1) {
    return num1 ^ 4;
}

void main() {
    printf("%d", flip(3)); 
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72336244

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档