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

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

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



一.通过 移位操作符

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

结果




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

目录
相关文章
|
存储 编解码 算法
OpenCV 图像处理学习手册:1~5
OpenCV 图像处理学习手册:1~5
387 0
|
11月前
|
存储 安全 网络协议
阿里云服务器通用型实例怎么选?g7/g8y/g8i适用场景、性能对比与选择参考
在选择云服务器实例规格时,对于需要平衡计算、存储和网络性能的应用场景来说,一般会选择通用型实例规格,在阿里云目前的活动中,属于通用型实例的主要有通用型g7、通用型g8y和通用型g8i实例。为了帮助大家更好地了解这三款实例的区别,并为选择提供参考,本文将详细对比它们的实例规格、CPU、内存、计算、存储、网络等方面的性能,并附上活动价格对比,以便用户能够全面了解它们之间的不同,以作参考选择。
587 14
|
8月前
|
Windows
office出现0xc0000142错误?windows错误代码为0xc0000142?
office出现0xc0000142错误?windows错误代码为0xc0000142?
399 0
|
定位技术 Python
Matplotlib 教程 之 Matplotlib imshow() 方法 1
《Matplotlib imshow() 方法教程》:本文介绍 Matplotlib 库中的 imshow() 函数,该函数常用于绘制二维灰度或彩色图像,也可用于展示矩阵、热力图等。文中详细解释了其语法及参数,例如颜色映射(cmap)、归一化(norm)等,并通过实例演示了如何使用 imshow() 显示灰度图像。
454 2
|
12月前
|
存储 JavaScript 前端开发
在NodeJS中使用npm包进行JS代码的混淆加密
总的来说,使用“javascript-obfuscator”包可以帮助我们在Node.js中轻松地混淆JavaScript代码。通过合理的配置,我们可以使混淆后的代码更难以理解,从而提高代码的保密性。
1192 9
|
API 容器
【HarmonyOS Next开发】Navigation使用
Navigation是路由容器组件,包括单栏(Stack)、分栏(Split)和自适应(Auto)三种显示模式。适用于模块内和跨模块的路由切换。 在页面跳转时,应该使用页面路由router,在页面内的页面跳转时,建议使用Navigation达到更好的转场动效场景。
774 8
【HarmonyOS Next开发】Navigation使用
【多线程面试题二十五】、说说你对AQS的理解
这篇文章阐述了对Java中的AbstractQueuedSynchronizer(AQS)的理解,AQS是一个用于构建锁和其他同步组件的框架,它通过维护同步状态和FIFO等待队列,以及线程的阻塞与唤醒机制,来实现同步器的高效管理,并且可以通过实现特定的方法来自定义同步组件的行为。
【多线程面试题二十五】、说说你对AQS的理解
|
Java Spring
🔥JSF 与 Spring 强强联手:打造高效、灵活的 Web 应用新标杆!💪 你还不知道吗?
【8月更文挑战第31天】JavaServer Faces(JSF)与 Spring 框架是常用的 Java Web 技术。本文介绍如何整合两者,发挥各自优势,构建高效灵活的 Web 应用。首先通过 `web.xml` 和 `ContextLoaderListener` 配置 Spring 上下文,在 `applicationContext.xml` 定义 Bean。接着使用 `@Autowired` 将 Spring 管理的 Bean 注入到 JSF 管理的 Bean 中。
365 0
|
存储 Kubernetes 监控
在K8S中,K8S本身优势、适应场景及其特点有什么?
在K8S中,K8S本身优势、适应场景及其特点有什么?