不懂下面函数,希望对此做出比较全面的解析

代码如下,大部分不懂
111111111111111111111


#include<string.h>
#include<stdio.h>
//unsigned int number --->1010101010101010101010
//unsigned int number ---->110011001100110011001100
//unsigned int number ---->11110000 11110000 11110000 11110000
unsigned int set_multi_bit_value(void)
{
    unsigned int value;
    int i=0;
    for(i=0;i<32;i++)
    {
        // if(i%2==0)// 1010101010
        //    if(i%4/2==0)// 110011001100
            if(i%8/4==0)// 11110000 11110000 
            {
                value &= ~(0x1<<i);
                //0x1<<2    --> 00000000 00000000 00000000 00000100
                //~(0x1<<2) --> 11111111 11111111 11111111 11111011
            }
            else // set one to odd bit
            {
                value |=0x1<<i;
             // 0x1<<1 00000000 000000000 000000000 00000010
             // 0x1<<3 00000000 000000000 000000000 00001000
            }
    }
    return value;
}
void convert_ten_to_binary(unsigned int value,char buff[])
{
    int i=0;
    while(value)
    {
        buff[i++]= value %2+ '0';
        value /=2;
    }
    buff[i]='\0';
}
void reserv_str_fun(char buff[])
{
    int len=strlen(buff);
    int i=0;
    char ch;
    for(i=0;i<len/2;i++)
    {
        ch=buff[i];
        buff[i]=buff[len-1-i];
        buff[len-1-i]=ch;
    }
}
int main(void)
{
    unsigned int count=0;
    char str[100];
    count=set_multi_bit_value();
    convert_ten_to_binary(count,str);
    reserv_str_fun(str);
    printf("str----->  %s\n",str);
    return 1;
}



```

@ada; 你可以解释这个代码么?

你把代码贴出来

垃圾代码
第一个函数就是返回一个unsigned int 0xf0f0f0f0 ,直接返回就是没必要计算
第二个函数返回他的二进制字符串形式,就是"1111000011110000..."
第三个函数把它反转

  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7759531
  • 这篇博客你也可以参考下:输入一行字符,分别统计求出其中英文字母、数字和其他字符的个数并输出结果
  • 除此之外, 这篇博客: 冒泡排序(1)中的 下面我们根据这个原理将代码写出来,然后将每次循环遍历排序之后的数组打印出来,先看一下输出结果: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • #include<iostream>
    #include<stdio.h>
    using namespace std;
    
    int main(){
    	double n,num[1000];    //n表示输入数据的个数,用num数组来存储 
    	double temp;
    	cin>>n;
    	for(int i=0;i<n;i++){
    		cin>>num[i];
    	} 
    	//进行冒泡排序 
    	for(int i=0;i<n-1;i++){
    		for(int j=0;j<n-i;j++){
    			if(num[j]<num[j+1]){
    				//如果前边的数比后边的大则交换两者的位置
    				temp = num[j];
    				num[j] = num[j+1];
    				num[j+1] = temp; 
    			}
    		}
    		//将每次排序之后的数组打印出来 
    		for(int i=0;i<n;i++){
    		cout<<num[i]<<" ";
    	}
    	cout<<endl;
    		
    	}
    	cout<<endl; 
    	for(int i=0;i<n;i++){
    		cout<<num[i]<<" ";
    	}
    	return 0;
    	
    } 
  • 您还可以看一下 尹成老师的尹成老师带你学算法课程中的 十亿算法数据项目38.逆向索引小节, 巩固相关知识点

感觉还是挺明显的,你是哪个函数那个一句号看不懂 方便解释
set multi bit value 是获取一个 二进制的值
convert ten to binary 是把十进制转换成二进制

reserv str func 是为打印预留字符串的空间大小