gpt4 book ai didi

c - 将一个整数拟合到另一个整数

转载 作者:太空宇宙 更新时间:2023-11-04 06:41:59 25 4
gpt4 key购买 nike

给定两个 32 位数字 N 和 M,以及两个位位置 i 和 j。编写一个方法,将 N 中 i 和 j 之间的所有位设置为 M(例如,M 成为 N 的子串,位于 i 并从 j 开始)。

示例:输入:N = 10000000000,M = 10101,i = 2,j = 6 输出:N = 10001010100

到目前为止我尝试过的一切-

int main()
{
int m, n, i, j;
printf("enter N\n");
scanf("%d",&n);
printf("enter M\n");
scanf("%d",&m);
printf("enter i\n");
scanf("%d",&i);
printf("enter j\n");
scanf("%d",&j);

int max = 1;
int left = max-(( 1 << j)-1);
int right = ((1 << j)-1);
int mask = left | right;
int ret = (n & mask)|(m << 1);
printf("the answer is %d", ret);

}

但我得到输出 1215753963

最佳答案

您在 printf 调用中使用了错误的格式说明符。 %d 将其打印为带符号的十进制整数。 Here是一篇关于将 printf 用于二进制格式的帖子。

巧合的是你得到的二进制数是:1011 0111 1000 1001 0001 0001 0001 0101

关于c - 将一个整数拟合到另一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6507102/

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