黑马程序员技术交流社区

标题: 打印一个数的二进制原码 [打印本页]

作者: why19910522    时间: 2015-8-8 23:21
标题: 打印一个数的二进制原码
  1. void printBinary(int m){
  2. //    提示用户输入一个数
  3.      printf("打印一个数的二进制原码\n请输入一个数:\n");
  4. //        判断输入的数是否是数字,如果不是则使用getchar函数将缓冲区里的无效字符取出来,并重新输入
  5.       while (!(scanf("%d",&m))) {
  6.              while (getchar()!='\n');
  7.              printf("输入错误!请重新输入:\n");
  8.      }
  9. //    当输入正数时,打印其二进制原码
  10.      if (m >= 0){
  11.          for (int i = 8*sizeof(int)-1; i >= 0; i--) {
  12. //      让数右移i位,并与1进行与运算,然后打印结果
  13.                 printf("%d",((m>>i)&1));
  14. //          每打印8位就打印一个空格
  15.                if (0 == i%8) {
  16.                      printf(" ");
  17.               }
  18.         }
  19.     }else{
  20. //      当输入负数时,打印其二进制原码
  21.              for (int i = 8*sizeof(int)-1; i >= 0; i--) {
  22. //            让最高位,既符号位永远打印1
  23.                       if (8*sizeof(int)-1  == i){
  24.                             printf("1");
  25.                      }else {
  26. //              让这个负数取反并加1既将这个负数的负号去掉,然后再去右移i位并和1进行与运算,然后打印
  27.                              printf("%d",(((~m+1)>>i)&1));
  28.                      }
  29. //            让最高位,既符号位永远打印1
  30.                     if (0 == i%8) {
  31.                              printf(" ");
  32.                     }
  33.             }
  34.       }
复制代码


作者: 阿伦666    时间: 2015-8-8 23:23
32个赞
作者: why19910522    时间: 2015-8-9 21:01
阿伦666 发表于 2015-8-8 23:23
32个赞






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2