使用while循环进行数据的遍历,将余数存储在arr的最后几位

  1. /*
  2. 二进制计算
  3. */
  4. #include <stdio.h>
  5. int main() {
  6. int val = 0, val1 = 0;
  7. int tmp = 0;
  8. int arr[8] = {0};
  9. int count = 7;
  10. printf("请输入你想要二进制分解的数:");
  11. scanf("%d", &val); //使用变量的地址来接受数据
  12. while (val > 0) {
  13. arr[count] = val % 2;
  14. val = val / 2;
  15. count--;
  16. }
  17. for (tmp = 0;tmp <= 7;tmp++) {
  18. printf("%d", arr[tmp]);
  19. }
  20. printf("\n");
  21. }

使用&位运算, 使用1000 0000&与数进行位运算获得最左边的位数,使用>>1将位数向左移动一位

这样就可以从左向右获得数字的二进制数

  1. /*
  2. 进行二进制转换
  3. */
  4. #include <stdio.h>
  5. int main() {
  6. int val = 0;
  7. printf("请输入一个数字:");
  8. scanf("%d", &val);
  9. unsigned char val1 = 0x80;
  10. printf("%d", (val & val1) != 0); //如果是1的话还是1,如果是0的话还是0,获得最左边的一个数
  11. val1 >>= 1; //将Ox80转换位0100 0000
  12. printf("%d", (val & val1) != 0); //如果是1的话还是1,如果是
  13. val1 >>= 1; //将Ox80转换位0010 0000
  14. printf("%d", (val & val1) != 0); //如果是1的话还是1,如果是
  15. val1 >>= 1; //将Ox80转换位0001 0000
  16. printf("%d", (val & val1) != 0); //如果是1的话还是1,如果是
  17. val1 >>= 1; //将Ox80转换位0000 1000
  18. printf("%d", (val & val1) != 0);
  19. val1 >>= 1; //将Ox80转换位0000 0100
  20. printf("%d", (val & val1) != 0); //如果是1的话还是1,如果是
  21. val1 >>= 1; //将Ox80转换位0000 0010
  22. printf("%d", (val & val1) != 0); //如果是1的话还是1,如果是
  23. val1 >>= 1; //将Ox80转换位0000 0001
  24. printf("%d\n", (val & val1) != 0); //如果是1的话还是1,如果是
  25. }

 

版权声明:本文为hyq-lst原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hyq-lst/p/12396382.html