c语言没有直接输出一个数二进制的占位符;所以得自己写
这是老师在视频里讲的:
- //右移31位,从最高为开始和1做&运算,得到每一位的二进制数值
- void printbinry(int num)
- {
- int count = (sizeof(num)<<3)-1;//值为31
- while (count>=0) {
- int bitnum = num>>count; //除去符号位,从最高位开始得到每一位
- int byte = bitnum & 1; //和1进行与运算得到每一位的二进制数
- printf("%d",byte);
-
- if (count%4==0) {//每隔四位打印空格
- printf(" ");
- }
-
- count--;
- }
- printf("\n");
-
复制代码
但是网上说还有一种方法是用c自带的itoa方法,在头文件<stdlib.h>中:
itoa(int value, char *str, int radix); 参数分别表示:
value:要转换的数字;
str:是一个字符串,存储转换后的进制;
radix:要转换的进制
- #include <stdlib.h>
- #include <stdio.h>
- int main()
- {
-
- int a = 10;
- char str[100];
- itoa(a,str,2);
-
- printf("%s\n", str);
-
- return 0;
- }
复制代码
但是会报错:clang: error: linker command failed with exit code 1 (use -v to see invocation)
是xcode编译器的问题吗 |