当前位置:网站首页>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;
}边栏推荐
- 数据库系统原理与应用教程(010)—— 概念模型与数据模型练习题
- SQL lab 26~31 summary (subsequent continuous update) (including parameter pollution explanation)
- Learning and using vscode
- 问题:先后键入字符串和字符,结果发生冲突
- 普乐蛙小型5d电影设备|5d电影动感电影体验馆|VR景区影院设备
- Several methods of checking JS to judge empty objects
- PowerShell cs-utf-16le code goes online
- About web content security policy directive some test cases specified through meta elements
- The left-hand side of an assignment expression may not be an optional property access.ts(2779)
- 解决 Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezone’ property manually
猜你喜欢

NPC Jincang was invited to participate in the "aerospace 706" I have an appointment with aerospace computer "national Partner Conference

SQL Lab (36~40) includes stack injection, MySQL_ real_ escape_ The difference between string and addslashes (continuous update after)

数据库系统原理与应用教程(011)—— 关系数据库

OSPF exercise Report

wallys/Qualcomm IPQ8072A networking SBC supports dual 10GbE, WiFi 6

Time bomb inside the software: 0-day log4shell is just the tip of the iceberg

Inverted index of ES underlying principle

idea 2021中文乱码

ps链接图层的使用方法和快捷键,ps图层链接怎么做的

千人规模互联网公司研发效能成功之路
随机推荐
(待会删)yyds,付费搞来的学术资源,请低调使用!
<No. 8> 1816. Truncate sentences (simple)
Unity中SmoothStep介绍和应用: 溶解特效优化
SQL Lab (46~53) (continuous update later) order by injection
SQL lab 26~31 summary (subsequent continuous update) (including parameter pollution explanation)
Fleet tutorial 15 introduction to GridView Basics (tutorial includes source code)
Epp+dis learning path (1) -- Hello world!
Ctfhub -web SSRF summary (excluding fastcgi and redI) super detailed
How to connect 5V serial port to 3.3V MCU serial port?
[filter tracking] strapdown inertial navigation pure inertial navigation solution matlab implementation
gcc 编译报错
RHSA first day operation
About web content security policy directive some test cases specified through meta elements
PowerShell cs-utf-16le code goes online
College entrance examination composition, high-frequency mention of science and Technology
Basic introduction to the 16 tabs tab control in the fleet tutorial (the tutorial includes source code)
Is it safe to open an account in Ping An Securities mobile bank?
SQL Lab (32~35) contains the principle understanding and precautions of wide byte injection (continuously updated later)
平安证券手机行开户安全吗?
全球首堆“玲龙一号”反应堆厂房钢制安全壳上部筒体吊装成功