吴皮皮 发表于 2019-11-25 23:46:49

C语言



定义函数void DecToBin(int a, char b);函数功能是将整数a转换为它对应的32位二进制机器数,将32位二进制机器数以字符串形式存于字符数组b (以“\0”字符结束)。。

      比如: a=160, 则函数调用结束后,b数组存储的串为000000000000000000100000

      a=-1,则函数调用结束后,b数组存储的串为1111111111111111111111

      从键盘输入- -个整数a,调用该函数,然后输出存储于b数组的表示二进制机器数的字符串

      要求:不允许使用%2运算,只能利用位运算符(如:移位运算,与运算等)实现程序功能。

jackz007 发表于 2019-11-26 00:42:31

本帖最后由 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 = 0 ; k < 32 ; b += '0' , b = 0 , d >>= 1 , k ++) if(a & d) b ++ ;
}

main(void)
{
      int a                         ;
      char b                  ;
      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>
页: [1]
查看完整版本: C语言