当前位置:网站首页>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;
}
边栏推荐
- 金融数据获取(三)当爬虫遇上要鼠标滚轮滚动才会刷新数据的网页(保姆级教程)
- 《看完就懂系列》天哪!搞懂节流与防抖竟简单如斯~
- What is a LAN domain name? How to parse?
- Static routing assignment of network reachable and telent connections
- 112. Network security penetration test - [privilege promotion article 10] - [Windows 2003 lpk.ddl hijacking rights lifting & MSF local rights lifting]
- 利用栈来实现二进制转化为十进制
- Epp+dis learning road (2) -- blink! twinkle!
- ES底层原理之倒排索引
- VSCode的学习使用
- Simple network configuration for equipment management
猜你喜欢
"Series after reading" my God! It's so simple to understand throttling and anti shake~
Completion report of communication software development and Application
Visual studio 2019 (localdb) \mssqllocaldb SQL Server 2014 database version is 852 and cannot be opened. This server supports version 782 and earlier
对话PPIO联合创始人王闻宇:整合边缘算力资源,开拓更多音视频服务场景
Upgrade from a tool to a solution, and the new site with praise points to new value
College entrance examination composition, high-frequency mention of science and Technology
千人规模互联网公司研发效能成功之路
30. Few-shot Named Entity Recognition with Self-describing Networks 阅读笔记
File upload vulnerability - upload labs (1~2)
Superscalar processor design yaoyongbin Chapter 8 instruction emission excerpt
随机推荐
VSCode的学习使用
Typescript interface inheritance
即刻报名|飞桨黑客马拉松第三期盛夏登场,等你挑战
Tutorial on principles and applications of database system (010) -- exercises of conceptual model and data model
Superscalar processor design yaoyongbin Chapter 8 instruction emission excerpt
Zero shot, one shot and few shot
Minimalist movie website
平安证券手机行开户安全吗?
SQL lab 26~31 summary (subsequent continuous update) (including parameter pollution explanation)
浅谈估值模型 (二): PE指标II——PE Band
Vxlan 静态集中网关
问题:先后键入字符串和字符,结果发生冲突
SQL blind injection (WEB penetration)
How much does it cost to develop a small program mall?
What is a LAN domain name? How to parse?
Common locking table processing methods in Oracle
@What happens if bean and @component are used on the same class?
powershell cs-UTF-16LE编码上线
跨域问题解决方案
Review and arrangement of HCIA