关于位运算符"<<"和">>"操作的问题【求大神,不是那么容易解决的】
今天看了一下关于位运算的一些东西,动手很了一个很简单的程序。
程序的功能是输入一个数,然后计算出它在二进制数的情况下为1的位数的个数。
int iNumber;while(true){ int iCount = 0; scanf("%d", &iNumber); if ( 0 == iNumber ) { printf("iNumber is 0 exit ! \n"); break; } while( 0 != iNumber ) { iCount += iNumber & 1; iNumber >>= 1; } printf("count : %d \n", iCount);}unsigned int iNumber; //只是改了这里讲iNumber改为无符号数。while(true){ int iCount = 0; scanf("%d", &iNumber); if ( 0 == iNumber ) { printf("iNumber is 0 exit ! \n"); break; } while( 0 != iNumber ) { iCount += iNumber & 1; iNumber >>= 1; } printf("count : %d \n", iCount);}int iNumber; //亲,这里不是无符号的啦while( true ){ int iCount = 0; scanf("%d", &iNumber); if ( 0 == iNumber ) { printf("iNumber is 0 exit ! \n"); break; } while( 0 != iNumber ) { iCount += 0 != ( iNumber & 0x80000000 ) ? 1 : 0 ; iNumber <<= 1; } printf("count : %d \n", iCount);}