输入正整数 转化为 二进制数输出

简介: 输入正整数 转化为 二进制数输出

输入正整数 转化为 二进制数输出



一.通过 移位操作符

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main() {
  int x;//输入x
  printf("请输入需要转换的数:>\n");
  scanf("%d", &x);
  int i;
  printf("打印二进制:");
  for (i = 30; i >= 0; i--) {
    printf("%d", (x >> i) & 1);//使用移位操作符
  }
}

结果



二.通过算术的方法


二进制数字 非0即1

b[i]=a%2 (得到的数都小于2,若等于2,则能被2整除)

a=a/2

数学点: a%n就能得到小于n的余数,即0~n-1
(若a=n,则可被n整除得1)

1. 这是打印出完整二进制数的版本

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//定义转换函数
void convert(int a) {
  int i;
  int b[32];//定义数组b存放余数
  for (i = 0; i < 31; i++) {
    b[i] = 0;
  }
  for (i = 0; i < 31; i++) {
    b[i] = a % 2;
    a = a / 2;
    if (0 == a) {
      break;
    }
  }
  printf("The converted number:");
  for (i = 30; i >= 0; i--) {  //倒序输出
    printf("%d", b[i]);
  }
  printf("\n");
  return;
}
int main() {
  int x;//输入x
  printf("请输入需要转换的数:>\n");
  scanf("%d", &x);
  convert(x);//调用转换函数
  return 0;
}


结果

完整二进制位数版本




而让b[i]都初始化3 通过if语句识别辨别出非有效位数 并不打印

2. 仅打印出有效二进制位数版本

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
//定义转换函数
void convert(int a) {
  int i;
  int b[32];//定义数组b存放余数
  for (i = 0; i < 31; i++) {
    //b[i] = 0;
    b[i] = 3;//初始化数组每个数都为3 (除0和1外的都可以)
  }
  for (i = 0; i < 31; i++) {
    b[i] = a % 2;
    a = a / 2;
    if (0 == a) {
      break;
    }
  }
  printf("The converted number:");
  for (i = 30; i >= 0; i--) {  //倒序输出
    if (b[i] == 3)   //仅输出有效二进制位数版本
      continue;
    else 
    printf("%d", b[i]);
  }
  printf("\n");
  return;
}
int main() {
  int x;//输入x
  printf("请输入需要转换的数:>\n");
  scanf("%d", &x);
  convert(x);//调用转换函数
  return 0;
}

结果




注意:要储存余数的数组进行元素初始化,否则未存入取余的数的部分都是原内存存放的随机数

目录
相关文章
|
6月前
数一下 1到 100 的所有整数中出现多少个数字9并输出这些数字
数一下 1到 100 的所有整数中出现多少个数字9并输出这些数字
74 0
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
|
1月前
输入一个整数,并将其反转后输出
【10月更文挑战第2天】输入一个整数,并将其反转后输出。
77 3
|
6月前
|
C++
写一个函数,输入一个四位数字,要求输出这四位数字字符,但是每两个数字间空一个字符,如输入1990,输出1 9 9 0
这是一个C++代码段,用于打印整数的逆序。程序从用户输入接收一个整数,然后通过递归方法将其逆序输出。示例结果展示了一张图片,但因摘要限制无法显示。代码功能是将数字如12345逆序输出为54321。
50 0
|
6月前
|
C++
写一个函数,输入一个四位数字,要求输出这四个数字字符,但每两个数字间空一个空格。如输入1990,输出1 9 9 0
这是一个C++代码片段,实现了一个函数`Print`,用于倒序打印整数。代码在`main`函数中读取用户输入的整数`n`,然后调用`Print`函数输出。示例运行结果显示了一张图片,显示了代码执行后的输出,但具体内容未提供。
80 0
|
6月前
25.输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值
25.输入任意的正整数,将其各位分离出来;求它是几位数,求各位上数字的和,求其逆值
51 0
|
6月前
|
C++
『C/C++』Eg2:简单输出整数
『C/C++』Eg2:简单输出整数
wustojc2001输出四位整数的各位数字
wustojc2001输出四位整数的各位数字
69 0
输出整数各位数字
输出整数各位数字
81 0
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
141 0
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。