如何用C语言实现十进制到二进制的转换并计算二进制中1的个数
2016-09-26 15:25
393 查看
<pre class="csharp" name="code">#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int num, temp, i = 0, k = 0, arr[100]; printf("请输入一个十进制的数:\n"); scanf("%d", &num); while (num != 0) { temp = num % 2; num = num / 2; arr[i++] = temp; } while (i > 0) { temp = arr[--i]; if (arr[i] == 1) k++; printf("%d", temp); } printf("\n"); printf("一共有%d个1", k); system("pause"); return 0; }
小结:十进制转换成二进制要注意:每次取得的余数要先暂时存放在一个数组里,因为最后转换成的二进制是通过十进制对2求余的余数自下而上排列的,需要将余数逆置否则就会发生错误.。这个程序需要一个while循环,因为不知道它的循环次数所以不能采用for循环。
该程序是运行过的,没有问题,因为是菜鸟级别的所以有什么不足之处希望大家能提出来,让我及时改正。
方法二:用按位与右移的运算来实现
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int data,count=0; scanf("%d", &data); while (data > 0) { { if (data & 0x1) count++; } data >>= 1; } printf("%d个1", count); system("pause"); return 0; }
方法三:减一操作来实现
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> int main() { int data,count=0; scanf("%d", &data); while (data) { data&=(data - 1); count++; } printf("%d个1", count); system("pause"); return 0; }
相关文章推荐
- C语言实现二进制与十进制转换
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言实现十进制转换成二进制
- (C语言)实现对任意浮点型数据从十进制到二进制的转换
- C语言实现十进制转换为二进制
- C语言用栈实现十进制转换为二进制的方法示例
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- C语言中字符串如何转换为二进制、八进制、十进制、十六进制
- 如何实现十进制转换为二进制
- c语言编程如何实现-十进制数转换成二进制和输出
- 利用CONNECT BY实现二进制到十进制的转换
- 用栈实现十进制到二进制的转换
- 用栈实现十进制转换为二进制
- 用递归法实现一个十进制数据转换成二进制
- Java使用bit array实现二进制,十进制,十六进制值之间的转换
- 十进制转换为二进制 (三种方法实现)