当前位置:网站首页>Utiliser la pile pour convertir le binaire en décimal
Utiliser la pile pour convertir le binaire en décimal
2022-07-07 12:26:00 【Je ne peux pas le laisser tomber.】
Comment convertir le binaire en décimal?
Prends un marron.:Par exemple,(100101)2(C'est2C'est un indice.)Méthode de conversion en décimale:
1*2^0+0*2^1+1*2^2+0*2^3+0*2^4+1*2^5
C'est facile à faire après:100101Ordre de pile1->0->0->1->0->1
Pas grand - chose.,Directement au Code
Définissez d'abord une pile avec une structure:
typedef struct {
ElemType *base;
ElemType *top;
int stacksize;
} sqstack;
Initialiser la pile:
void InitStack(sqstack *s) { //Initialiser la pile
s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); //mallocDemande d'espace,
if (!s->base) { //Si la demande échoue
exit(0);
}
s->top = s->base; //Le Haut de la pile est égal au bas de la pile
s->stacksize = STACK_INIT_SIZE;
}
Insérer(Pile de pression)Fonctionnement:
void Push(sqstack*s, ElemType e) { //Opération d'insertion(Pile de pression)
if (s->top - s->base >= s->stacksize) {// Si la pile déborde
s->base = (ElemType*)realloc(s->base, (s->stacksize + STACKINCREMENT) * sizeof(ElemType));//reallocDemande d'espace, Enregistrer les données originales , Et ajouter un nouvel espace , Pour trouver un nouvel espace pour stocker les données
if (!s->base) {
exit(0);
}
}
*(s->top) = e;// Affectation du Haut de la pile
s->top++;//En haut de la pile+1
}
Jetez(Hors de la pile)Fonctionnement:
void Pop(sqstack*s, ElemType*e) {// Lancer l'opération
if (s->top == s->base) {
return;
}
*e = *--(s->top);
}
Calculer la longueur de la pile:
int StackLen(sqstack s) {//Calculer la longueur de la pile
return (s.top - s.base);
}
Fonction principale:
int main() {
ElemType c;
sqstack s;
int len, sum = 0;
InitStack(&s);
printf("Veuillez saisir un nombre binaire,Entrée# Le symbole indique la fin !\n");
scanf("%c", &c);
while (c != '#') {
Push(&s, c);
scanf("%c", &c);
}
getchar();//Espace absorbant
len = StackLen(s);
printf("La capacité actuelle de la pile est:%d\n", len);
for (int i = 0; i < len; i++) {
Pop(&s, &c);
sum = sum + ((c - 48) << i);//c-48Parascll Conversion de la table de codes en forme ,(c-48)<<iL'Opération bit est équivalente à2^i
}
printf(" Le nombre décimal converti est :%d\n", sum);
return 0;
}
Tout le Code:
#include<stdio.h>
#include<stdlib.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
typedef char ElemType;
typedef struct {
ElemType *base;
ElemType *top;
int stacksize;
} sqstack;
void InitStack(sqstack *s) { //Initialiser la pile
s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); //mallocDemande d'espace,
if (!s->base) { //Si la demande échoue
exit(0);
}
s->top = s->base; //Le Haut de la pile est égal au bas de la pile
s->stacksize = STACK_INIT_SIZE;
}
void Push(sqstack*s, ElemType e) { //Opération d'insertion(Pile de pression)
if (s->top - s->base >= s->stacksize) {// Si la pile déborde
s->base = (ElemType*)realloc(s->base, (s->stacksize + STACKINCREMENT) * sizeof(ElemType));//reallocDemande d'espace, Enregistrer les données originales , Et ajouter un nouvel espace , Pour trouver un nouvel espace pour stocker les données
if (!s->base) {
exit(0);
}
}
*(s->top) = e;// Affectation du Haut de la pile
s->top++;//En haut de la pile+1
}
void Pop(sqstack*s, ElemType*e) {// Lancer l'opération
if (s->top == s->base) {
return;
}
*e = *--(s->top);
}
int StackLen(sqstack s) {//Calculer la longueur de la pile
return (s.top - s.base);
}
int main() {
ElemType c;
sqstack s;
int len, sum = 0;
InitStack(&s);
printf("Veuillez saisir un nombre binaire,Entrée# Le symbole indique la fin !\n");
scanf("%c", &c);
while (c != '#') {
Push(&s, c);
scanf("%c", &c);
}
getchar();//Espace absorbant
len = StackLen(s);
printf("La capacité actuelle de la pile est:%d\n", len);
for (int i = 0; i < len; i++) {
Pop(&s, &c);
sum = sum + ((c - 48) << i);//c-48Parascll Conversion de la table de codes en forme ,(c-48)<<iL'Opération bit est équivalente à2^i
}
printf(" Le nombre décimal converti est :%d\n", sum);
return 0;
}
边栏推荐
- Sort out the garbage collection of JVM, and don't involve high-quality things such as performance tuning for the time being
- 编译 libssl 报错
- EPP+DIS学习之路(1)——Hello world!
- [full stack plan - programming language C] basic introductory knowledge
- UP Meta—Web3.0世界创新型元宇宙金融协议
- (to be deleted later) yyds, paid academic resources, please keep a low profile!
- zero-shot, one-shot和few-shot
- 2022年在启牛开华泰的账户安全吗?
- 数据库系统原理与应用教程(011)—— 关系数据库
- Learning and using vscode
猜你喜欢
110.网络安全渗透测试—[权限提升篇8]—[Windows SqlServer xp_cmdshell存储过程提权]
<No. 8> 1816. Truncate sentences (simple)
In the small skin panel, use CMD to enter the MySQL command, including the MySQL error unknown variable 'secure_ file_ Priv 'solution (super detailed)
普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备
Superscalar processor design yaoyongbin Chapter 8 instruction emission excerpt
数据库系统原理与应用教程(009)—— 概念模型与数据模型
Time bomb inside the software: 0-day log4shell is just the tip of the iceberg
Zero shot, one shot and few shot
金融数据获取(三)当爬虫遇上要鼠标滚轮滚动才会刷新数据的网页(保姆级教程)
【玩转 RT-Thread】 RT-Thread Studio —— 按键控制电机正反转、蜂鸣器
随机推荐
什么是局域网域名?如何解析?
In the small skin panel, use CMD to enter the MySQL command, including the MySQL error unknown variable 'secure_ file_ Priv 'solution (super detailed)
Tutorial on the principle and application of database system (011) -- relational database
Let digital manage inventory
111. Network security penetration test - [privilege escalation 9] - [windows 2008 R2 kernel overflow privilege escalation]
Solutions to cross domain problems
NPC Jincang was invited to participate in the "aerospace 706" I have an appointment with aerospace computer "national Partner Conference
EPP+DIS学习之路(2)——Blink!闪烁!
AirServer自动接收多画面投屏或者跨设备投屏
SQL lab 21~25 summary (subsequent continuous update) (including secondary injection explanation)
【深度学习】图像多标签分类任务,百度PaddleClas
免备案服务器会影响网站排名和权重吗?
Introduction to three methods of anti red domain name generation
密码学系列之:在线证书状态协议OCSP详解
SQL Lab (46~53) (continuous update later) order by injection
源代码防泄密中的技术区别再哪里
Epp+dis learning path (1) -- Hello world!
110.网络安全渗透测试—[权限提升篇8]—[Windows SqlServer xp_cmdshell存储过程提权]
Routing strategy of multi-point republication [Huawei]
Baidu digital person Du Xiaoxiao responded to netizens' shouts online to meet the Shanghai college entrance examination English composition