#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
???
Как будет оцениваться условие для различных двоичных чисел ???Как оценивается эта программа?
Не голосующий, но вам нужно больше узнать о проблеме, если вы хотите получить хороший ответ. Как вы думаете, что делает эта линия? Какой аспект не ясен? Можете ли вы предоставить [SSCCE] (http://sscce.org/), который показывает, что вы пробовали это и объяснили, какой аспект выхода вы не понимаете? –
Хорошо, увидев это в контексте, я действительно должен согласиться с тем, что вы должны были поэкспериментировать, чтобы найти ответ самостоятельно. Если бы вы просто где-то прочитали это выражение, я понял, что неофит запутался в том, что он делает, но это рабочая программа, которую вы могли бы скомпилировать и изменить самостоятельно, чтобы понять ее поведение. -1. –