编写无符号数真值转换为机器数的函数: char * UnsignedValueToBinary(unsigned int n); 要求:输入一个无符号数,从main函数中调用UnsignedValueToBinary函数,返回输入的无符号数对应的32位机器数二进制字符串。
时间: 2024-05-15 08:18:12 浏览: 81
无符号数二进制转十进制
好的,我理解了。以下是您所需要的函数UnsignedValueToBinary的实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char * UnsignedValueToBinary(unsigned int n)
{
// 分配字符串空间
char *binary_str = (char *)malloc(33 * sizeof(char));
// 将字符串最后一位置为空字符'\0'
binary_str[32] = '\0';
// 将每一位从右至左读入二进制字符串
for(int i = 31; i >= 0; i--)
{
binary_str[i] = (n & 1) + '0';
n = n >> 1;
}
return binary_str;
}
int main()
{
unsigned int n = 2021; // 测试用例,可自行更改
char *binary_str = UnsignedValueToBinary(n);
printf("%s\n", binary_str);
free(binary_str); // 释放内存
return 0;
}
```
这个函数会将输入的无符号整数转换成32位的机器数二进制字符串,并以char*类型进行返回,同时需要注意内存的分配和释放。
在main函数中,我们可以先设置一个无符号整数n的值作为测试用例,然后调用UnsignedValueToBinary函数将其转换为对应的二进制字符串,并用printf输出结果,最后释放内存。
阅读全文