关于32单片机 十进制转换二进制,保存至数组的问题 5C

![图片说明]现在需要将一个十进制数转换为二进制数字并保存在数组里面。二进制数result是经过转换之后的数据,但是在保存在数组里面的时候除了点问题。debug模式下数组显示的都是0,不知道除了什么问题,请各位大神帮帮忙,谢谢

0

2个回答

n为要转换的目标十进制数,十进制数是int类型,占2或4个字节,-32,768 到 32,767 或 -2,147,483,648 到 2,147,483,647,如果是unsigned int
占2或4个字节,0 到 65,535 或 0 到 4,294,967,295,所以要注意区分是有符号整数还是无符号整数,如果是无符号整数,则以下函数输出正常,如果时有符号整数则要另外考虑:
void fun(int n)
{
int s[32],i = 0;
while(n)
{
s[i++] = n % 2;
n /= 2;
}
for(i = i-1; i >= 0; i--)
{
printf("%d",s[i]);
}
printf("\n");
}

0
pennytang
pennytang 回复yujunkan: 是不是你的运行环境问题。上面这位兄弟的程序没有问题啊。怎么还是0呢。
11 个月之前 回复
yujunkan
yujunkan 试过了,还是都为0
11 个月之前 回复

void fun(int num)
{
static u8 s[32],num_long; //设置为静态变量 或者设置为全局变量
u8 i;
// 这里最好给s【32】和num_ling 附初值 初值为0 num_long只是为了记录最后二进制数的长度
为了方便printf的,如果不需要刻意省略
for(i=0;i<32;i++)
{
if((num&0x01)) //每次检测num的最低为 如果为1 则存入s数组为1 如果为0则存入数组为0
{
num_long=i; //num_long记录最后一个为1的位 也就是这个二进制数的长度
s[i]=1
}
else
s[i]=0;

num=num>>1; //每检测一位 num向右右移1位
}
}

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
32位(二进制-十六进制-十进制)转换工具
个人写的一个小程序 用来把32位(二制从选择框钓选确定)转换成十进制、十六进制 写与硬件相关的程序特别需要
点分十进制转32位二进制数组
该方法返回长度为32的byte数组 byte[] bytes = new byte[32] 不是 byte[] bytes = new byte[4] public static byte[] StringToBinary(String strIP){ String stringIP = strIP.replace(&quot;.&quot;, &quot; &quot;);//用空格取代点 Str...
java十进制转二进制,并且将01单独取出放到数组
(1)实现效果图: (2)实现目的: 因为我们的机器返回的是二进制数据,在android端需要对这个二进制进行接收,但是这个二进制在接收的过程中被转换成了int数组接收显示的,所以需要我们另外写一个方法来进行还原 六种音源分别是 光纤,高电平,蓝牙,低电平,同轴,U盘播放器 对应的二进制分别为: 1 1 1 1 1 1  或者0 0 0 0 0 0 其中0表示没有此项音源,1表示...
一段C51的二进制转十进制的程序
LOOP1:   CLR A                   ;二转十子程序MOV R2,TH0  MOV R3,TL0 MOV R4,A                ;将R4R5R6分别清零 MOV R5,A MOV R6,A MOV R7,#10H           ;R7=(#10H)=16 LOOP2:     CLR C
Java编程:数组的应用(十进制转换成二进制)
这段代码的功能是“十进制转换成二进制”,起初的代码有些繁琐,并且代码复用性不高,经过多次的改正得到了现在的实现代码。 思路:1,想得到所给数字的最低位,则让它与1做与运算即可得到;            2,把得到的这个数对应到所给出的对应表中,则得到了这一位的相应二进制的值            3,要想继续取下一位则需要把该数字右移一位; 实现代码:               pu
C语言实现十进制转二进制
代码如下:# include <stdio.h>int main() { int i, n = 0, b[16]; scanf("%d", &i); //对十进制数的读取 for (; i; i>>=1) b[n++] = i&1; for (; n; ) printf("%d", b[--n]); //二进制数一个个输出
STM32开发 -- 进制与字符串间的转换
上一篇文章最后留下一个任务,字符串函数和进制间转换、进制和字符串间转换。 这些是会经常用到的。但是有时一时会想不起来。 这里做一下总结,方便以后需要查找。 先贴出一些,之前讲过的知识点。 一、字符串函数 参看:C语言再学习 – 字符串和字符串函数 二、位操作 参看:C语言再学习 – 位操作 三、ASCII码表 参看:C语言再学习 – ASCII码表(转)...
C语言 十进制转二进制,并保存在数组中
#include &amp;lt;stdio.h&amp;gt; #define uint unsigned int #define ushort unsigned short uint transform_data(uint frequence,ushort* pwm_table) { uint temp = frequence; int pwm_index = 0; while(temp) {...
用C#代码实现二进制与十进制的互相转换
代码如下:   1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 3
十进制和三十六进制转换函数(PHP)
<?php $dic = array( 0 => '0', 1 => '1', 2 => '2', 3 => '3', 4 => '4', 5 => '5', 6 => '6', 7 => '7', 8 => '8', 9 => '9', 10 => 'A', 11 => 'B', 12 => 'C', 13 => 'D', 14 => 'E', 15 => 'F', 16 => 'G',
第十二周 OJ总结<2>--进制转换(十进制转二进制)
Copyright (c) 2016, 烟台大学计算机与控制学院 All ringts reserved.  文件名称:OJ总结-进制转换(十进制转二进制) 作 者:王兴振 完成日期:2016年11月18日 版 本 号:未知 题目描述:   输入一个非负整数(十进制),输出此整数对应的二进制数 输       入:   正整数(十进制) 输       出:   对
十进制转换二进制基本方法,数组做法
1.First 10进制转换成2进制可能是大家学习语言的入门点,由于UP年少无知,刚开始的时候好像是第一篇自己写的BOKE还是用手机写的,有一些格式没有清除,不方便与大家观看,复制。 但是居然这是我BOKE里面阅读量最大的一篇,反思.JPG,阅读量居然有180+,都超越了硕哥的第一热门BOKE,窃喜.JPG。 时间:2018年11月21日20:57:52 于是乎,你们的傻BOKE UP准备...
php 实现进制相互转换
最近的项目中需要用到进制转换,这个问题在刚刚接触计算机理论时候,还是很会的,好久不用,居然模糊了…… 从十进制向其它进制转换,用的是就用该数字不断除以要转换的进制数,读取余数。连接一起就可以了。 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
byte[]字节数组转换为二、八、十、十六进制字符串
【前言】java中很多时候需要将byte[]转为各种进制的字符串显示,从2,8,10,16到比较高级的base64(编码),至于什么时候需要这样,当你遇到这样的问题就知道了。【代码】进制转换比较简单,直接上代码,编码转换见其他文章。例如这个[java] view plain copypackage com.uikoo9.util.encrypt;    import java.math.BigIn...
用数组实现10进制转2进制
#include #define MAX 8 void jingzhi(int *arry,int a) {    int *p=arry;    int i,temp=a;    if(a    {      p[0]=1;      temp=temp*(-1);    }    else    {      p[0]=0;    }    for(
3:十进制数转二进制数(类似大整数除法)
题目链接:http://dsalgo.openjudge.cn/huawen02/3/ 题目大意就是将十进制数转换成二进制,难就难在十进制数的位数小于100位。 这就意味着不能用任意类型来存,只能用数组来存。 十进制转二进制十进制转二进制 十进制整数转换为二进制整数采用"除2取余,逆序排列"法。 具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进
十进制转二进制(不通过数组)
#include&amp;lt;iostream&amp;gt;using namespace std;int main(){ int n,result,k,i,temp;; while(cin&amp;gt;&amp;gt;n) { result=0,k=1; temp = n; while(temp) { i = temp%2; result = k * i + result; k = k*10; t...
进制转换(大数十进制转化成二进制)
题目描述将一个长度最多为30位数字的十进制非负整数转换为二进制数输出。输入描述:多组数据,每行为一个长度不超过30位的十进制非负整数。 (注意是10进制数字的个数可能有30个,而非30bits的整数)输出描述:每行输出对应的二进制数。示例1输入0 1 3 8 输出0 1 11 1000#include &amp;lt;iostream&amp;gt; #include &amp;lt;string.h&amp;gt; #incl...
oracle 10进制转32进制
FUNCTION GEN_NUMBER_10TO32(P_NUM NUMBER, P_LENGTH NUMBER) RETURN VARCHAR2 IS     L_RESULT VARCHAR2(20);     L_NUM    NUMBER := P_NUM;   BEGIN     --若LENGTH为负数则返回'0',若为0则返回实际长度的三十二进制字符串     --若LEN
十进制点分IP转换为32位二进制IP
先来看看简单的情况: #include <iostream> using namespace std; int main() { int *p = new int[3]; //assignment for(int i = 0; i < 3; i++) { *(p + i) = i + 1; } //print in first way. fo
PIC单片机实现二进制码与压缩BCD码的相互转换
编写子程序Bin2BCD、BCD2Bin实现二进制数到压缩BCD码的相互转换。待转换的二进制数存放在w寄存器内,子程序调用完成后得到的BCD码仍存放在w寄存器内返回。例如: movlw .45       ; w=45 call   Bin2BCD ; nop              ; w=0x45 一、实现二进制数到压缩BCD码的转换 二进制数转压缩BCD码的方法是将二进
用数组将十进制转成二进制
#include using namespace std; int main() { int a[50],n,i=0; cout<<"请输入一个十进制数"<<endl; cin >> n; //输入十进制数 while (n != 0) { a[i] = n%2;//储存n除2的余数; n = n/
《第二周实验报告1-2》---运用数组实现十进制转化为二进制
/*(1‐2)运用数组实现十进制转化为二进制。 * 算法说明: * 1.将n除2的余数暂时储存在整型数组中 * 2.当n的值为0时结束运算 * 3.将数组中的数倒着输出 */ #include using namespace std; int main() { int N_2[81], n, i = 0; cin >> n; while (n != 0) { N_2[
BCD码与10进制转换
关于BCD码,本文不做解释。本文只介绍8421 BCD码与10进制的转换。 1、8421 BCD转10进制 unsigned char bcd_to_hex(unsigned char data) { unsigned char temp; temp = ((data&amp;gt;&amp;gt;4)*10 + (data&amp;amp;0x0f)); return temp; } ...
C语言 十进制转换成二进制
十进制转换成二进制的C语言程序 能够详细明了的表示出来 
黑马程序员—操作数组的练习:十进制数转换二进制、八进制、十六进制数。
---------------------- ASP.Net+Android+IO开发S、.Net培训、期待与您交流! ---------------------- 说明:本次练习采用移位的方法针对int类型数进行转换。 移位思想将十进制数转换二进制、八进制、十六进制数的思路: 计算机以二进制形式存储数值,所以进制的转换都是对二进制数进行操作。 所谓的类型转换实际上是将计算机存储的
js进行二进制和十进制之间的相互转换
十进制转换成二进制:toString()方法 二进制转换成十进制:parseInt()方法 var num = 8;                                            //  定义一个十进制的整数 var str = num.toString(2);                         //  转换成二进制的字符串,2表示二进制  "1
单片机中进制转换知识
1.如何把一个四字节的十六进制数转换为十进制数,十六进制数的格式低位在前,假设第一个字节位hex_buf[0],hex_buf[1],hex_buf[2],hex_buf[3]。 方法: uint64 add_sum =0; sum += hex_buf[0]; sum += hex_buf[1] sum += hex_buf[2] sum += hex_buf[3]
计算机2进制、4进制、8进制、10进制、16进制、32进制计算规则
计算机2进制、4进制、8进制、10进制、16进制、32进制计算规则
通过移位把十进制转换成二进制的一个尝试
目的:将一个十进制数x转化成二进制数并打印出来。 主要思路:在我的机器上,一个short变量占据两个字节,连续的十六位,先定义一个short型变量i,然后将其分为两个八位的部分(s,(s+1)),用指针操作这两部分,给高地址的八位赋值为0,低地址的八位赋值为x,这样,要转换的数就以二进制形式储存在s所指向的八位里面。然后将i左移一位,那么x的二进制中的最高位将进入s+1的二进制最低位,此时,获取s
C/C++:十进制转为二进制(n进制转为十进制)
I. 十进制转换为二进制1.在二进制中,奇数的末尾一定是1,而偶数的末尾一定是0. 一般而言,对于数字n,其二进制的最后一位是n%2;这里值得注意的是,计算的第一位数字其实是待输出的二进制数的最后一位,(所以这里可以定义一个数组来存放二进制数0或1;当然也可以采用函数递归来实现);要获得下一位数字,必须把原数字除以2。如果计算结果是偶数,那么二进制的下一位数就是0;如果是奇数,就是1.把上面的话
用数组把十进制转换成二进制
#include using namespace std; int main() {  int n,k,j,a[50];  k=0;  cout  cin>>n;  while(n!=0)  {   j=n%2;   a[++k]=j;   n=n/2;  }  cout  for(;k>0;k--)  {     cout  }  cout  retu
[进制转换] 十进制 二进制 十六进制 8421码
十 进制 与 N 进制 日常生活里的,1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ,就是十进制 十进制可以用的数字符号,有 0 1 2 3 4 5 6 7 8 9这 十个 十进制 有 十个数字符号可以用 ,N进制 就该有 N个数字符号可以用 十进制 可以用的最大的数字符号是9 因为9...
负数的二进制和十进制之间的转换
负数的二进制和十进制之间的转换: 1. 十进制负数转换为二进制的方法为: 1、将十进制转换为二进制数。 2、对该二进制数求反。 3、再将该二进制数加1. 总之就是将十进制数转换为二进制数求补码即为结果。比如: -32 第一步:32(10)=00100000(2) 第二步:求反:11011111 第三步:加1:11100000 所以-32(10)=11100000(2)2. 计
十进制转二进制,二进制转十进制的函数代码
//十进制转二进制 func fuc(person:Int) { let a = String(person,radix:2) print(a) } fuc(person: 3) //二进制转十进制 func binary2dec(num:String) { var sum = 0 for c in num { sum = sum * 2 + Int(“©”)! } print(sum) }...
二进制、十进制、十六进制转换工具 V1.5【终极版】
原创软件,MFC做的界面,可以任意转换64位的数据:2进制、10进制、16进制之间进行转换,取位、移位等等,包括大小端转换等等,简单、实用、方便,欢迎光临大家使用
使用数组,编写一个任意进制正整数转换为十进制的转换工具。
使用数组,编写一个任意进制正整数转换为十进制的转换工具。(以2,10进制互转为例,其 他请举一反三: 二进制数1101转十进制:1×2的三次幂+1×2的二次幂+0×2的一次幂+1×2的零次幂=8+4+0+1=13) 接替分
2进制转10进制51单片机汇编
初学单片机的几个简单程序,如2进制转换为10进制的汇编程序,(汇编程序)
负数的十进制转二进制
负数十进制转二进制:换成二进制后   取反 加1 “ 0000 0101”在十进制中表示“5”,将这个二进制数(源码)转换为反码就是 “1111 1010”而它的补码就是在反码的个位上加1为“1111 1011” 这个补码的十进制数为“-5” 负数二进制: 在计算机中,负数以其正值的补码形式表达。 负数源数据不管符号的正值称为原码,对其进行取反,取反后的数据称为反码。比如原来数据
十进制浮点数转换成IEEE754标准的32浮点数的二进制格式
将20.163转换成754标准的32位浮点数 1.将十进制数转换成二进制数 十进制浮点数,整数部分转换成二进制,采用除2取余法,将余数从低到高排列,即为整数的二进制数; 小数部分转换成二进制,采用乘2取整法,将取整数顺序排列,即为小数的二进制数。 小数部分乘2直到小数部分为0,或取到想要的位数,或循环出现前。 整数部分 20/2=10    ....  0 10/2=5      .
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 关于大数据培训 关于云计算