要想编写十进制转化成二进制的带码首先要清楚十进制转化成二进制的算法,下面我们从两个方面实现这个转化:

1.按照十进制转化成十进制的常规算法实现:

普通算法实现:

我们举一个简单的例子,比如取整数52
52/2 = 26 余 0;
26/2 = 13 余 0;
13/2 = 6  余 1;
6 /2 = 3  余 0;
3 /2 = 1  余 1;
1- -  - - - -1;     
52 在一步一步进行%2运算中得到的余数为 0 , 0 , 1 , 0 , 1 , 1;
所以52转化成二进制数就是把上面得到的余数按倒叙排列,即110100;
所以,我们在了解了其基本算法以后就可以按照算法步骤进行编程了。
下面献上带码(注:以下代码仅仅可以实现十进制正整数的转化,对于负数不适用,通用的方法下面会进行详解
#include<stdio.h>
//普通方法;
int main()
{int a[30], i = 0, x , y;printf("请输入一个十进制整数:\n");scanf("%d",&x);while(x != 0){y = x%2;
由于代码很容易理解所以没有做太多的注释,我想大多数人都可以看懂的。下面我就介绍第二种方法;
        a[i] = y;
        i++;        x = x / 2 ;    }    i- -;//按照循环i多加一次,所以要减去一    for(; i >= 0 ; - -i)    {        printf("%d",a[i]);    }    return 0 ;}
优化方法:(负数也可以)
首先我们需要知道数据在内存中是如何存储的,在这里我就不详细说明了,如果你想弄明白可以参考
http://c.biancheng.net/cpp/html/3095.html​     和 http://www.infocool.net/kb/OtherLanguage/201611/209695.html
数据在内存中存储是以二进制方式进行存储的 ,这里我们可以把整数简单的看成浮点数(这里只当成float)float型的数据在内存中存储时去掉符号位,还有8个指数位,23个尾数位写程序时我们忽略符号位,因为我们输出时不需要输出符号位,只输出数据的二进制形式。
还是从一个简单的例子出发:
十进制数528的二进制码为:0000001000010000
将其取反(求反码)后的结果:1111110111101111
将反码加一(求补码)后结果:1111110111110000
所以,-528的二进制码为1111110111110000
小说一下概念,然后看一个位运算符,按位与(&) :0&0=0 , 0&1=0 , 1&0=0 , 1&1=1
我们知道,奇数的二进制最后一位全部为1,而偶数的二进制最后一位全部为0,那么用按位与运算符我们可以很方便地知道一个数是奇数还是偶数,只要让数字 &1 就可以了,因为 奇数&1=1 ,而 偶数&1=0
现在看一段代码,作用是将十进制数转换为二进制数。
#include <stdio.h>
int main()
{
int x,i;
scanf("%d",&x);
for(i=31;i>=0;i--) printf("%d",x>>i&1);
system("pause");
}

重点就在 x>>i&1 啦,每次按照能否被二整除来确定0或者1,然后一位一位的移动。

参考文献:Slyar Home » 正负数十进制转二进制 位运算 C语言版

十进制整数转化为二进制详解相关推荐

  1. 数据结构与算法--二进制详解 Python二进制算法详解 史上最详细的二进制讲解 彻底搞懂原码、反码、补码 Python的负数二进制表示形式

    阅读目录 原码.反码.补码 机器数 和 真值 原码.反码.补码的基础 Python中负数的处理 负数的补码如何转成十进制 位运算符 和 移位运算符 基本概述 妙用 二进制涉及的算法 原码.反码.补码 ...

  2. 十进制转化为二进制java代码_【模板小程序】任意长度十进制数转化为二进制(java实现)...

    妈妈再也不用担心十进制数过大了233 import com.google.common.base.Strings; import java.math.BigInteger; import java.u ...

  3. 十进制浮点数转化为二进制的Python代码

    十进制转化为二进制的逻辑: 1.整数部分: 如图所示,便是浮点数中十进制整数部分转化为二进制的逻辑 整数35,转化为二进制数为100011 2.小数部分 例如: 0.25的二进制: 0.252=0.5 ...

  4. 十进制如何转化为二进制和六进制

    十进制如何转化为二进制和十六进制 一.十进制转化为二进制 这里我们以十进制数15为例,先用15除以2等于7余1,我们把1提取出来,用上一次除得的7除以2等于3余1,用上一次除得的3除以2等于1余1,一 ...

  5. 实现 十进制整数转换成二进制,八进制,十六进制

    整型有4种进制形式: 1.十进制: 都是以0-9这九个数字组成,不能以0开头. 2.二进制: 由0和1两个数字组成. 3.八进制: 由0-7数字组成,为了区分与其他进制的数字区别,开头都是以0开始. ...

  6. 将十进制数转化为二进制并在OLED屏幕上显示

    将十进制数转化为二进制并在OLED屏幕上显示 直接上代码: //显示二进制小数 //x,y为坐标 Num为想要转换的数(可以是十进制,也可以是十六进制) //len为想要转换的二进制的位数 size为 ...

  7. 二进制详解+集合算法的实现笔记

    前言 本篇文章转载自iukey所写的<位运算的威力>(点击蓝色的'位运算威力',即可跳转到原文) 一.有关位运算的基础知识总结 位运算包括:&(与).|(或).^(异或).~(取反 ...

  8. 【小工具类】将一个十进制数转化成二进制/四进制/八进制/16进制

    先直接上完整代码: public class Test {public static void main(String[] args) {int num = 100;System.out.printl ...

  9. 给定一个十进制整数, 转成二进制形式,转成十六进制形式。

    1.十进制整数转二进制数方法: 除以2取余数,逆序排列(除二取余法). 具体做法:假设有一个十进制数字31,让它一直去 除以2,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到 ...

最新文章

  1. UI基础 - UIScrollView
  2. AWS — AWS EC2
  3. HTML5_1 笔记
  4. c与python 数据传递-详解python如何调用C/C++底层库与互相传值
  5. SnapKit 约束创建过程
  6. Benchmark与Profiler---性能调优得力助手
  7. python snap7 plc_Python-Snap7获取西门子PLC 300数值
  8. java时钟时针绘制代码_java实现时钟效果
  9. IDEA提高运行速度
  10. java中人民币的符号怎么打_打印机打印人民币符号¥
  11. vps没有mysql怎么用商店_买了vps能干什么,何不用它搭建一个5T私人网盘?
  12. macos系统镜像iso_我们一起来安装----虚拟机安装macOS
  13. MYSQL之索引详谈(三种介绍方式)
  14. 携手绿凯智能,趣开门人脸识别门禁落地武汉光谷生物城
  15. gmail真心用不惯啊
  16. 单工通信/半双工通信/全双工通信,串行传输/并行传输,同步传输/异步传输的区别
  17. 累加器 java_Spark笔记之累加器(Accumulator)
  18. switch语句用法
  19. 电脑死机,虚拟机里面的系统开不了
  20. NS3安装步骤【MAC系统】

热门文章

  1. SpringBoot配置全局的异常捕获
  2. 金蝶BOS,服务端执行SQL语句参考
  3. 瑞吉外卖-Day01
  4. 【中科蓝讯AB532X】自定义按键处理函数的实现
  5. 微信小程序开发.小程序入门(上)
  6. 不断提升认知,从而达到交易的最高级别——稳定盈利(一)
  7. bzoj3663/4660CrazyRabbit bzoj4206最大团
  8. 使用Slidingmenu爆出“Both setBehindContentView must be called in onCreate in addition to setContentView.”
  9. Wireshark使用(捕获过滤器、显示过滤器、TCP交互抓包示例、抓取本地回环数据包等)
  10. 433/315无线接收芯片 XL520 射频芯片 规格书