我已經包含了下面的整個代碼,但我唯一想知道的是setBit
函數。 x = 1 << bitNum
只會移動0001然而很多空間左邊取決於什麼號碼bitNum
是,但我不明白最後一行(*u |= x)
爲什麼這裏使用的指針?設置0到1之間的一個整數
#include <stdio.h>
typedef unsigned int uint;
int checkBit(uint u, uint bitNum);
void setBit(uint* u, uint bitNum);
int countOnes(uint u);
int main()
{
uint xxx, bitNumber;
printf("\n Enter decimal integer xxx: ");
scanf("%u", &xxx);
printf("\n xxx in decimal: %u", xxx);
printf("\n xxx in hex: %x", xxx);
////// Test countOnes function /////////////
printf("\n Number of ones in xxx: %d", countOnes(xxx));
////// Test checkBit function /////////////
printf("\n Enter bit to check: ");
scanf("%u", &bitNumber);
printf("\n Bit %d is %d", bitNumber, checkBit(xxx, bitNumber));
printf("\n Enter bit to check: ");
scanf("%u", &bitNumber);
printf("\n Bit %d is %d", bitNumber, checkBit(xxx, bitNumber));
////// Test setBit function /////////////
printf("\n Enter bit to set: ");
scanf("%u", &bitNumber);
printf("\n Setting bit %d of xxx", bitNumber);
setBit(&xxx, bitNumber);
printf("\n xxx in hex: %x", xxx);
printf("\n");
return 0;
}
int countOnes(uint u)
{
int bitCount;
for(bitCount = 0; u; u = u >> 1)
{
bitCount += u & 1;
}
return bitCount;
}
void setBit(uint* u, uint bitNum)
{
int x;
x = 1 << bitNum;
*u |= x;
}
int checkBit(uint u, uint bitNum)
{
int x = u >> bitNum;
if(x & 1 == 1)
return 1;
else
return 0;
}
* u用於設置u指向的整數位。 – 2015-02-09 08:11:27