gpt4 book ai didi

c - 编写一个程序来交换整数中的奇数位和偶数位,最少需要多少步?

转载 作者:太空狗 更新时间:2023-10-29 15:59:41 24 4
gpt4 key购买 nike

我正在尝试解决这个问题..我的代码如下

#include<stdio.h>
int main() {
int a, b = 0xaaaaaaaa, c = 0x55555555;
printf("\n enter the number: \n");
scanf("%d", & a);
a = ((a & b) >> 1) | ((a & c) << 1);
printf("\n %d", a);
}

..但是我得到了一些奇怪的输出..谁能告诉我我犯了什么错误?

最佳答案

你的想法不错。可能您得到了奇怪的输出,因为位移并不完全按照您的预期工作。

您的变量是 int 类型。表示 - 他们已签名。现在,当您对有符号整数进行位移时,还有关于如何传播 MSB 位的附加规则。简单来说,当一个有符号整数右移时,MSB 不一定为零,它是从旧的 MSB 值复制而来。

尝试用unsigned int替换int

关于c - 编写一个程序来交换整数中的奇数位和偶数位,最少需要多少步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6495854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com