|
发表于 2019-11-25 23:46:49
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
定义函数void DecToBin(int a, char b[33]);函数功能是将整数a转换为它对应的32位二进制机器数,将32位二进制机器数以字符串形式存于字符数组b (以“\0”字符结束)。。
比如: a=160, 则函数调用结束后,b数组存储的串为000000000000000000100000
a=-1,则函数调用结束后,b数组存储的串为1111111111111111111111
从键盘输入- -个整数a,调用该函数,然后输出存储于b数组的表示二进制机器数的字符串
要求:不允许使用%2运算,只能利用位运算符(如:移位运算,与运算等)实现程序功能。
本帖最后由 jackz007 于 2019-11-26 17:51 编辑
- #include <stdio.h>
- void DecToBin(int a , char b[])
- {
- unsigned int d , k , m ;
- for(d = 0x80000000 , k = 0 ; ! (a & d) ; d >>= 1 , k ++) ;
- for(m = 0 , b[m] = 0 ; k < 32 ; b[m ++] += '0' , b[m] = 0 , d >>= 1 , k ++) if(a & d) b[m] ++ ;
- }
- main(void)
- {
- int a ;
- char b[34] ;
- a = -1 ;
- DecToBin(a , b) ;
- printf("%10d : %s\n" , a , b) ;
- a = 160 ;
- DecToBin(a , b) ;
- printf("%10d : %s\n" , a , b) ;
- a = 2477 ;
- DecToBin(a , b) ;
- printf("%10d : %s\n" , a , b) ;
- }
复制代码
编译、运行实况:
- C:\Bin>g++ -static -o x x.c
- C:\Bin>x
- -1 : 11111111111111111111111111111111
- 160 : 10100000
- 2477 : 100110101101
- C:\Bin>
复制代码
|
|