33,311
社区成员
发帖
与我相关
我的任务
分享
// 显示 二进制位字符串
void show_bstr(const char *str)
{
int i = 0;
while(str[i]) // 遇到\0(字符串结尾符)终止循环
{
putchar(str[i]); // 输出一个二进制bit
if(++i%4 == 0 && str[i]) // 4位一组显示二进制字符串
putchar(' '); // 每4个bit为一组,每组之间用空格隔开
}
}
char * itobs(int n,char * ps)
{
int i;
static int size = 8 * sizeof(int); // size: 计算int有多少个bit
for(i = size -1;i >= 0;i--,n >>= 1) // 提取n的每一个bit(最低位),每处理一次,n右移一位
ps[i]=(n&1) + '0'; // 由于是字符数组,因此加'0'进行转换
// n&1: 取n的最低位
ps[size]='\0'; // 字符串最后要以\0结尾,看一下show_bstr的while循环就知道它的作用了
return ps;
}