这个方法是求二进制的,但是有一些代码没有看明白, ps:如果我的注释有问题,请指出

char* convert_2(int dec)
{
char* the_String = (char*) malloc(sizeof (int) * Bits_in_Byte + 1);//sizeof(int)=4,the_String=4*8+1=33
int i = 0;
int bitMask = 1;
int tempbitMask = 0;
for(i = sizeof (int) * Bits_in_Byte -1; i>= 0; i--) {//i=31

    tempbitMask =  bitMask<<i;_**//tempbitMask = bitMask*2^i**_

    if(tempbitMask & dec)//这个循环没看懂

        the_String[31-i]  = '1';

    else {
        the_String[31-i] = '0';

    }

}

the_String[32] = 0;
return the_String;

}


char* convert_2(int dec)
{
    //这里就是申请一个大小为33的动态字符数组
    char* the_String = (char*) malloc(sizeof (int) * Bits_in_Byte + 1);//sizeof(int)=4,the_String=4*8+1=33
    int i = 0;
    int bitMask = 1;
    int tempbitMask = 0;

    //这里就是这个函数的主体算法,循环次数为32次,因为条件为大于等0,所以0的那一次也会运行,其实就是每次循环取一个位
    for(i = sizeof (int) * Bits_in_Byte -1; i>= 0; i--) {//i=31

        //你这个转换的公式是没问题的,但是这里主要不是看它的十进制值,而是二进制值,
        //你代入一下会发现第一次的值为 1000 0000 0000 0000 0000 0000 0000 0000(最右为0位,最左为31位)
        //第二次的值为                0100 0000 0000 0000 0000 0000 0000 0000
        //第三次的值为                0010 0000 0000 0000 0000 0000 0000 0000
        //这个值其实是为了能够与一个值相与以取这个值某个位,具体是哪一个位就看tempbitMask里面1的位置
        //以第一次为例,就是取31位的值,第二次就是30位,一直到0位
        tempbitMask = bitMask << i;//tempbitMask = bitMask*2^i

        //emmm,这是if判断,然后tempbitMask & dec这个运算就是取dec第i位的数据,
        //因为是二进制,值只有0/1所以就用if判断写'0''1'两种字符了
        //想要理解这种以位相与取位的原理,最好还是取几次循环的的情况代入值自己用计算器算一下,很容易就能明白
        if(tempbitMask & dec)//这个循环没看懂
 
            the_String[31 - i]  = '1';//进入此分支代表dec的第i位为1所以就写入'1'
 
        else {
            the_String[31 - i] = '0';//同上

        }
 
    }
 
    //这里就是为什么32个位却申请了33个字符的原因,字符串需要一个字符在字符串的最后存放字符串结束符(即'\0'0也可以)
    the_String[32] = 0;
    return the_String;
}