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

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

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



一.通过 移位操作符

#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;
}

结果




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

目录
相关文章
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
给定一个正整数N,将其表示为数字1,3,7,15相加的形式输出。请编码找出使上述数字出现的总次数最少(每个数字可以重复使用)的组合。
|
2月前
输入一个整数,并将其反转后输出
【10月更文挑战第2天】输入一个整数,并将其反转后输出。
91 3
|
7月前
53.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”
53.从键盘输入任意一串字符串,程序输出同样的一串字符,要求输出字符串中大小写相互转化,其他符号不变。如输入“a123BxC”,则输出“A123bXc”
55 0
|
7月前
|
C++
『C/C++』Eg2:简单输出整数
『C/C++』Eg2:简单输出整数
|
7月前
输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
输入一个字符串,统计其中字符A的数量并且输出,输入共有一行,为一个不带空格的字符串(其中字符数不超过100),输出一行,包含一个整数,为输入字符串中的A的数量
|
C++
c++输出字符串
c++输出字符串
112 1
输出整数各位数字
输出整数各位数字
88 0
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
146 0
多组输入,一个整数(3~20),表示数字三角形边的长度,即数字的数量,也表示输出行数。
02:输出第二个整数
02:输出第二个整数
124 0

热门文章

最新文章