A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

请教:怎么将十进制数转换为二进制数?例如十进制20转换为二进制,需要详细的分析过程,谢谢!

8 个回复

倒序浏览
  1. #include <stdio.h>

  2. /*

  3. 刚看了运算符这里,记得

  4.   1、可以用一个数m跟1进行按位与运算,即: m&1 ,从而来获得这个数的末位数

  5.   2、右移运算符 >> 可以移动指定数位

  6.   3、可以配上for循环实现依次右移

  7. 因此:

  8. */

  9. int main(int argc, const char * argv[]) {
  10.    
  11. //    定义变量并提示用户输入
  12.    
  13.     int num;
  14.    
  15.     printf("请输入一个数:\n");
  16.    
  17. //    接收用户输入的数
  18.    
  19.     scanf("%d",&num);
  20.    
  21. //    开始使用按位与 & ,右移位运算符 >> 实现10进制转2进制
  22.    
  23.     for (int i = 0; i < 32; i++) {
  24.         
  25. //    定义临时变量(貌似相当于空杯子)
  26.         
  27.         int temp = 0;
  28.         
  29. //        先进行右移(此处的31-i可以通过画图得知)
  30.         
  31.         temp = num >> (31-i);
  32.         
  33. //       右移位后跟1进行按位与运算,定义一个变量用于接收每次一位后的结果
  34.         
  35.         int n = temp & 1;
  36.         
  37. //        打印运算后结果
  38.         
  39.         printf("%d",n);
  40.         
  41.     }
  42.    
  43.     printf("\n");

  44.     return 0;
  45. }

  46. //效果还行,希望对你有帮助
复制代码
回复 使用道具 举报
为楼上鼓掌
回复 使用道具 举报
找20距离2的倍数最近的一个值,比如:2,4,6,8,16,32,64.。。。,因为离16进,16对应的2进制是第五位,所以第5位是1,剩下4,4又是2的倍数,对应位置是2,所以结果为10010,这是个比较快的方法,希望采纳
回复 使用道具 举报
哈哈哈哈
回复 使用道具 举报
利用取余运算,,对2取余后,将得到的余反过来写就是二进制了,,.
回复 使用道具 举报
倒取余可以   8421码也很实用
回复 使用道具 举报
取余的挺合适的,该36进制以下的都可以了
回复 使用道具 举报
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马