gpt4 book ai didi

c - 这个计划如何评价?

转载 作者:行者123 更新时间:2023-11-30 21:03:48 25 4
gpt4 key购买 nike

 #include <stdio.h>

void showbits(unsigned int x)
{
int i;
for(i=(sizeof(int)*8)-1; i>=0; i--)
(x&(1<<i))?putchar('1'):putchar('0');

printf("\n");
}

int main()
{
int j = 5225, m, n;
printf("The decimal %d is equal to binary - ", j);
/* assume we have a function that prints a binary string when given
a decimal integer
*/
showbits(j);

/* the loop for right shift operation */
for ( m = 0; m <= 5; m++ ) {
n = j >> m;
printf("%d right shift %d gives ", j, m);
showbits(n);
}
return 0;
}

请详细解释一下。比如为什么写成1<<i而不是i>>1 ???
对于各种二进制数,条件将如何评估???

最佳答案

表达式x << y表示“x 向左移动 y 位数”。 1 << i将返回一个具有位 i 的整数设置为 1,所有其他位设置为 0。

另一方面,

( i >> 1 表示“将 i 向右移动一位”。它们根本不是可比较的操作。假设 i 为 5: 1 << i 将返回二进制数字 00100000 或 32,而 i >> 1 将返回二进制数 00000010 或 2。)

x & (1 << i)将对 x 执行按位 AND 运算和1 << i ,相当于检查 x 是否有位i设置为 1。如果是,这将返回一个正数;如果不是,则返回0。

因此该表达式的总体结果将是打印字符 1如果x有位i设置为 1,并打印 0如果没有。

关于c - 这个计划如何评价?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20568270/

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