-
2021-05-22 17:37:50
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8
数码管是电子设计之中最常用的显示元器件,但是数码管一次只能显示一个数字,如果要显示多位数字只能使用多个数码管并且要把数字拆分开,一位一位的送到数码管中才能显示,今天就介绍把一个多位数字拆分的方法。
把一个多位数拆分要用到两个运算符“/”除法运算符和“%”取余运算符:
/:得到的运算结果是整数,68/10=6;
%:得到的运算结果是余数,68%10=8;
是不是有点意思。
比如要显示524这个三位数,下面讲解这个数字的拆分算法。
百位:524/100 = 5;
十位:524%100=24;24/10=2;
各位:524%100=24;24%10=4;
通过这个例子是不是找出规律来了?简写入下:
百位:524/100 = 5;
十位:524%100/10=2;
各位:524%100%10=4;
再举一个四位数的例子,拆分6893如下:
千位:6893/1000=6;
百位:6893%1000/100 = 8;
十位:6893%1000%100/10 = 9;
各位:6893%1000%100%10 = 3;
是不是分离出来了?这时候就可以把数据送到数码管显示了。
以上分离方法只是众多分离方法中的一种,在使用的时候可以在纸上简单算一下,结果就很容易出来了。想要了解数码管是如何工作的,请点击这里。
本订阅号致力于单片机、ARM等嵌入式软硬件的设计经验分享,秉承“人人都是电子设计经验的分享者”的理念,成功路上不孤单,我们一起努力。公众号:micropoint8
更多相关内容 -
c语音位操作详解
2021-05-24 09:45:44C语言的设计具备了汇编语言的运算能力,它支持全部的位操作符。位操作符是对字节或字中的位进行测试、置位或移位处理,在对微处理器的编程中,特别适合对寄存器、I/O端口进行操作。6种伟操作符:(1) & :按位...C语言的设计具备了汇编语言的运算能力,它支持全部的位操作符。位操作符是对字节或字中的位进行测试、置位或移位处理,在对微处理器的编程中,特别适合对寄存器、I/O端口进行操作。
6种伟操作符:
(1) & :按位“与”——仅当两个操作数为1时,结果为1,否则为0。如:1000 1000 & 1000 0001 = 1000 0000;
(2) | :按位“或”——仅当两个操作数为0时,结果为0,否则为1。如:1000 1000 | 1000 0001 = 1000 1001;
(3) ^:按位“异或”——仅当两个操作数不同时,相应的输出结果才为1,否则为0。
如:1000 1000 ^ 1000 0001 = 0000 1001 ;
(4) ~ :“取反”——把1置为0,0置为1。如:~1000 1000 = 0111 0111;
(5) <
(6) >>: “右移”——将变量的各位按要求向右移动若干位。如:0000 1000>>3=0000 0001;
位运算符的应用:
(1)直接交换两个变量的值
例如,若有变量a = 3,b = 4,想要交换它们的值,可以做如下一组操作:
a ^ = b
b ^ = a
a ^ = b
首先,a ^ = b:
a 0000 0011
^ b 0000 0100
a = 0000 0111
其次,b ^ = a:
b 0000 0100
^ a 0000 0111
b = 0000 0011
最后,a ^ = b:
a 0000 0111
^ b 0000 0011
a = 0000 0100
这样,a、b两个变量中的值就进行了对调。
(2)快速乘除运算
移位操作可用于整数的快速乘除运算,左移一位等效于乘2,而右移一位等效于除以2。
如:x = 7,二进制表达为:0000 0111,
x < < 1 0000 1110,相当于:x =2*7=14,
x < < 3 0111 0000,相当于:x=14*2*2*2=112
x < < 2 1100 0000,x= 192
在作第三次左移时,其中一位为1的位移到外面去了,而左边只能以0补齐,因而便不等于112*2*2=448,而是等于192了。当x按刚才的步骤反向移动回去时,就不能返回到原来的值了,因为左边丢掉的一个1,再也不能找回来了:
x > > 2 0011 0000,x=48
x > > 3 0000 0110 x=48/8=6
x > > 1 0000 0011 x=6/2=3
(3)将寄存器指定位置为1
PORTA |= (1<
PORTA | = (1<< 4)就行了。当然,也可以使用:
PORTA | = (1<< 7) | (1<< 4 ) | (1<< 0)这样的指令一次将设第8、5和1位置1,但又不影响到其它位的状态。
(4)将寄存器指定位置为0
PORTA &= ~(1<
这条指令将寄存器的任意位清0,而又不影响其它位的现有状态。比如说,你如果想将第4位清0,就使用:
PORTA & = ~ (1<< 4)就行了。
下面是POJ 3748题,应用了位操作符:
/*
位操作
Description
假设你工作在一个32位的机器上,你需要将某一个外设寄存器的第X位设置成0(最低位为第0位,最高位为第31位),
将第Y位开始的连续三位设置成110(从高位到低位的顺序),而其他位保持不变。对给定的寄存器值R,及X,Y,
编程计算更改后的寄存器值R。
Input
仅一行,包括R,X,Y,以逗号","分隔,R为16进制表示的32位整数,X,Y在0-31之间且Y>=3,(Y-X)的绝对值>=3,保证两次置位不会重合
Output
更改后的寄存器值R(16进制输出)
Sample Input
12345678,0,3
Sample Output
1234567c
Source
*/
#include
int main()
{
int R, X, Y;
scanf("%x,%d,%d",&R,&X,&Y);
R &= ~(1<
R |= (1<
Y--;
R |= (1<
Y--;
R &= ~(1<
printf("%x/n",R);
return 0;
}
-
用c语言如何表示出一个数的个位,百位,十位
2021-01-14 16:45:33展开全部如果n是个多位十进制数,那么n%10是个位数字,e5a48de588b...设一个数为n,则在C语言中其个位、十位、百位、千位依次这样计算:n/1%10,n/10%10,n/100%10,n/1000%10代码如下:#includeint main(){int...展开全部
如果n是个多位十进制数,那么n%10是个位数字,e5a48de588b662616964757a686964616f31333433663066n/10%10是十位数字,n/100%10是百位数字,依此类推。
设一个数为n,则在C语言中其个位、十位、百位、千位依次这样计算:n/1%10,n/10%10,n/100%10,n/1000%10
代码如下:
#include
int main(){
int n = 123456;
int unitPlace = n / 1 % 10;
int tenPlace = n / 10 % 10;
int hundredPlace = n / 100 % 10;
int thousandPlace = n / 1000 % 10;
printf("个位:%d\n十位:%d\n百位:%d\n千位:%d\n", unitPlace, tenPlace, hundredPlace, thousandPlace);
getchar();
return 0;
}
扩展资料:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
-
输入一个七位数将这个数的奇位数重新组合成新的四位数并输出的编程怎么写 在线等急
2021-05-26 00:47:58还有一种解法是,直接用字符串接收,这样就不用对数据进行拆分了,直接对字符串中的数排序,然后输出字符串。这种解法,输入的数据不能有前置0.第一种解法的程序:#include #include #include int cmp(const void *p...推荐答案
娜美小宅女
2017.10.23
采纳率:58% 等级:42
已帮助:17万人
我这儿有几个疑问:(1)我想知道,你所说的有0的情况是什么情况?输入有前置0的数据?比如(0123),还是怎么回事?(2)你输入的数据是否是正整数?或者说是非负数。能够确定不是小数。我所有的程序都是输入非负整数。我这儿有两种解法,一种解法是按照你所的方法,将输入的数据n分解开,放入数组中。然后对数组进行从大到小的排序,最后输出数组中的数据。这个程序中的数据可以有前置0,比如0123,程序当做123来处理。还有一种解法是,直接用字符串接收,这样就不用对数据进行拆分了,直接对字符串中的数排序,然后输出字符串。这种解法,输入的数据不能有前置0.第一种解法的程序:#include #include #include int cmp(const void *p, const void *q){ return *(int *)q-*(int *)p;}int main(){ int m, n, i, j, a[100]; while(scanf("%d", &n)==1) { m = n; i=0; do { a[i] = m%10; m = m/10; i++; }while(m); qsort(a, i, sizeof(int), cmp); for(j=0; j#include #include int cmp(const void *p, const void *q){ return *(char *)q-*(char *)p;}int main(){ char s[100]; int i, t; while(scanf("%s", s)==1) { t = strlen(s); qsort(s, t, sizeof(char), cmp); puts(s); }}
00分享举报
此回答由管理员 一世的约萣靓 推荐为最佳回答。
-
《C语言杂记》C语言结构体和联合体详解
2021-09-08 23:09:45像 int、float、char 等是由C语言本身提供的数据类型,不能再进行分拆,我们称之为基本数据类型;而结构体可以包含多个基本类型的数据,也可以包含其他的结构体,我们将它称为复杂数据类型或构造数据类型,它允许... -
【C语言程序设计】C语言回文数怎么求
2021-05-19 11:56:37【C语言程序设计】C语言回文数怎么求问题描述打印所有不超过n(取n256)的其平方具有对称性质的数(也称回文数)。问题分析对于要判定的数n计算出其平方后(存于a),按照“回文数”的定义要将最高位与最低位、次高位与次... -
C语言详解:函数递归专题
2021-08-17 14:19:32} 但是这个方法效率是非常低的,当数字特别大时,层层拆分下来,时间效率是 O ( 2 n ) O(2^n) O(2n)。 根据公式可知,第三个斐波那契数可由前两个得到,我们利用这个规律 int Fib(int n) { if (n ) return 1; ... -
C语言笔记
2021-10-23 11:38:34第三章 C语言的数据类型 3.1 变量和常量 常量 不占内存,在程序运行时其值不能改变的量,在程序运行时它作为操作对象直接出现在运算器的各种寄存器中 变量 变量是指在程序运行时可以改变的量,变量的功能就是... -
C语言基础—把不大于5位的整数各位上数字的正序和逆序输出
2020-10-30 07:45:17算法解析 (1) 首先需要讲解的是place的作用, 对于任意不多余 5 位的一个正整数num,有10(x-1)≤num,那么num的位数为x,则 x-1≤log10(num) 即 x=(int)log10(num)+1, 所以程序中直接用place = log10((double)num... -
史上最全C语言函数详解笔记
2021-04-18 17:40:01但是C语言中的函数是什么样的呢?在维基百科中的定义为子程序。 在计算机科学中,子程序,是一个大型程序中的某部分代码, 由一个或多个语句块组 成。它负责完成某项特定任务,而且相较于其他代 码,具备相对的独立... -
蓝桥杯算法训练 乘积最大(动态规划 C语言)
2021-05-20 12:53:09看不懂代码下面还有讲解 代码实现如下: #include #define max(a,b) a>b?a:b long long dp[42][8];//dp[i][j]表示i个数j个乘号的最大值,设想成矩阵表示 char c[42]; long long num(int a,int b){//将第a位到第b位... -
c语言-数据在内存中的存储(详解)
2021-08-22 22:19:27现在我们来简单介绍一下在c语言中的常见的数据类型以及它们的范围: char //字符数据类型 short //短整型 int //整形 long //长整型 long long //更长的整形 float //单精度浮点数 double //双精度浮点数 类型的... -
C语言解剖整理
2021-01-17 16:52:09C语言解剖整理 1、名词说明: 定义:(编译器)创建一个对象,并为对象分配一块内存并给它取名,即变量名或对象名。例: int a = 0; 声明:没有分配内存 告诉编译器,这个名字已经匹配到一块内存上,声明的... -
6-10 阶乘计算升级版 (20 分)(C语言版-pta)
2022-02-21 13:30:05例如4的阶乘为24,则num[0]=4,num[1]=2 这种方法的原理就是将数字的每一位拆分出来存到数组,在求阶乘时,每一次乘法都分解为数组的每一位乘这个数,例如: 2的阶乘,num[0]=num[0]*2%10=2; 3的阶乘,num[0]=num... -
单片机C语言static属性和数码管显示程序
2021-05-20 02:23:55static从英文上翻译是静态的意思,在C语言中static所起的作用也正是静态。对于局部变量而言,其作用域是局部的如某一子函数体,程序在每次执行时调用该子函数时,其声明的局部变量都会重新赋值。那如果我们想让程序... -
自学C语言 零基础 最详细 最全面 最有趣 只有沉的下心的人才觉得好(有每更彩蛋呦~)
2022-03-31 14:07:56初识C语言 什么是C语言(此处简单讲下历史和背景,可跳到下小节) 所谓C语言,是一门沟通的基础语言,就像人和人之间交流用汉语或英语等,C语言就是人和计算机交流的基础语言,属于上千计算机语言的一种,但因应用... -
C程序之整数拆分依次存入字符数组
2019-11-07 13:12:19整数拆分依次存入字符数组 给定一串整数,该如何存入字符数组,这在软件编程看来,似乎不是很必要的,尤其在接下来的操作中,会有把数组不停位移的操作,原因很简单: 写这篇文章的时候,我主要用在单片机开发上,... -
C语言_数据类型+整型与浮点数的存储+无符号数与有符号数区别+(例分析子+讲解)
2021-02-02 00:42:19文章目录 数据类型 一.... } 9的二进制位为: 0 0 0 0 0 0 0 0…1 0 0 1(32位) 当以浮点型打印时二进制会被拆分 同理浮点数9.0 9.0=(-1)^0 *1.001 * 2 ^3 S=0 M=1.001 E=127+3=130 所以最后打印的结果为 -
C语言中的这些经典题目你都会了吗?【一文带你回顾经典】【全程高能】
2022-05-02 14:59:02关于C语言中的经典题型,你又了解多少呢?凡人在这里给初学者准备了九道关于C语言中递归的题型,让初学者可以很好的练习练习,巩固所学知识 -
单片机C语言实现数码管控制
2017-06-13 08:30:29本文分析了数码管的工作原理,并尝试用C51单片机去控制数码管的显示。希望更加深入理解单片机的内部工作原理和C语言的特性。 -
数据的存储——C语言
2022-03-05 19:19:35C语言中数据的存储,超详细的哦 -
C语言基础知识(三)-程序设计结构、数组、字符串处理函数
2021-08-03 17:34:32本文是C语言的基础知识,主要讲解三种程序设计结构、数组、字符串和字符数组、数组元素查询以及字符串处理函数。 -
【C语言】变种水仙花题解
2022-03-03 01:59:16变种水仙花数 - Lily Number:把任意的数字,从中间拆分成两个数字,比如1461 可以拆分成(1和461),(14和61),(146和1),如果所有拆分后的乘积之和等于自身,则是一个Lily Number。 例如: 655 = 6 * 55 + 65 *... -
一文带你深入浅出C语言数据
2022-04-29 20:19:35深入浅出讲述C语言数据相关知识。 -
【C语言从青铜到王者】第二篇·详解函数
2021-04-17 21:23:18由于C语言库函数较多,讲解原理的话涉及内容庞杂,博主才疏学浅,作为替代这里给出C语言库函数(包括各种关键字)查询的网址供大家参考。有条件的小伙伴建议下载MSDN软件(相当于离线的知识站)辅助学习 C/C++官方... -
C语言系列之FFT算法实现
2021-01-14 14:54:40在后面讲解FFT数学原理推导将详细说这个问题,这里先有个大概印象。 问题七:蝶形运算? 对于蝶形运算,你可以理解是一种通过图形来自定义的运算。 左边是输入,右边是输出结果,对于横线上的字母有两种情况表示: ... -
【学习笔记】C语言基础入门——这一篇就够了!
2021-06-07 10:09:22本文将简要讲述C语言的基础知识,内容清晰易理解,相信你也能轻松的学会C语言的基础知识内容的。现在让我们一起来看看! 前言 C语言作为目前最流行的一门编程语言,它具有良好的可移植性、功能多样性、执行效率高效... -
如何学好C语言--你的学渣朋友告诉你
2020-04-17 13:47:04(一)C语言网https://www.dotcpp.com/ 水题+基础题偏多 标记 编编程的网站号 题目描述 难易程度 输入格式 输出格式 算法分类 √ 1 两数之和 简单 √ 2 两数相加... -
抽丝剥茧C语言(高阶)数据的储存+练习
2022-05-26 19:50:51但是在C语言中除了8 bit的char之外,还有16 bit的short型,32 bit的long型(要看具体的编译器),另外,对于位数大于8位的处理器,例如16位或者32位的处理器,由于寄存器宽度大于一个字节,那么必然存在着一个如何将...