从 2 到 7 的数字的二进制代码

Binary code for numbers from 2 to 7

本文关键字:数字 代码 二进制      更新时间:2023-10-16

你好,我为我的最终学校项目制作了简单的程序,将正常的十年nuber编码为二进制,反之亦然。问题在于二进制部分,当您为从 2 到 7 的数字输入二进制代码时,您会看到 c++ 无法识别它们这是我的代码(它是克罗地亚语,但文本并不重要):

#include <iostream>
#include <cstdlib>
#include <fstream>
using namespace std;
int main () {
     int n;
cout<<"-------------------------KODER/DEKODER-------------------------"<<endl;
ofstream Info;
Info.open("Info.txt");
Info<<"KODER_DEKODER verzija 1.0.0nOvaj program je napisan kako bi se brzo dekadni broj pretvorio u binarni i obrnuto bez previse razmisljanja"<<endl;
Info.close();
cout<<"NAPOMENA: Uneseni brojevi i binarne kombinacije moraju biti izmedu brojeva 0 i 15"<<endl;
cout<<"Unesite 1 ako zelite kodirati dekadni broj u binarni, a ako zelite dekodirtai binarni broj u dekadni unesite broj 2"<<endl;
cin>>n;
    int d,b;
    if (n==1){
        cout<<"Unesite dekadni broj koji zelite kodirati u binarni"<<endl;
        cin>>d;
     if (d==0){
    cout<<"Vas kodirani dekadni broj glasi 0000"<<endl;
 }else if (d==1){
     cout<<"Vas kodirani dekadni broj glasi 0001"<<endl;
     }else if (d==2){
     cout<<"Vas kodirani dekadni broj glasi 0010"<<endl;
     }else if (d==3){
     cout<<"Vas kodirani dekadni broj glasi 0011"<<endl;
     }else if (d==4){
     cout<<"Vas kodirani dekadni broj glasi 0100"<<endl;
     }else if(d==5){
     cout<<"Vas kodirani dekadni broj glasi 0101"<<endl;
     }else if (d==6){
     cout<<"Vas kodirani dekadni broj glasi 0110"<<endl;
     }else if  (d==7){
     cout<<"Vas kodirani dekadni broj glasi 0111"<<endl;
     }else if (d==8){
     cout<<"Vas kodirani dekadni broj glasi 1000"<<endl;
     }else if (d==9){
     cout<<"Vas kodirani dekadni broj glasi 1001"<<endl;
     }else if(d==10){
     cout<<"Vas kodirani dekadni broj glasi 1010"<<endl;
     }else if (d==11){
     cout<<"Vas kodirani dekadni broj glasi 1011"<<endl;
     }else if(d==12){
     cout<<"Vas kodirani dekadni broj glasi 1100"<<endl;
     }else if(d==13){
     cout<<"Vas kodirani dekadni broj glasi 1101"<<endl;
     }else if(d==14){
     cout<<"Vas kodirani dekadni broj glasi 1110"<<endl;
     }else if(d==15){
     cout<<"Vas kodirani dekadni broj glasi 1111"<<endl;
     }
     else {
        cout<<"Unesi broj izmedu 0 i 15"<<endl;
        return main();
     }
        }
    else if (n==2) {
        cout<<"Unesite binarni broj koji zelite pretvoriti u dekadni"<<endl;
        cin>>b;
         if (b==0000) {
 cout<<"Vasa binarna kombinacija daje broj 0"<<endl;
} else if (b==0001) {
cout<<"Vasa binarna kombinacija daje broj 1"<<endl;
} else if (b==0010) {
cout<<"Vasa binarna kombinacija daje broj 2"<<endl;
 } else if (b==0011) {
cout<<"Vasa binarna kombinacija daje broj 3"<<endl;
 } else if (b==0100) {
cout<<"Vasa binarna kombinacija daje broj 4"<<endl;
 } else if (b==0101) {
cout<<"Vasa binarna kombinacija daje broj 5"<<endl;
 } else if (b==0110) {
cout<<"Vasa binarna kombinacija daje broj 6"<<endl;
 } else if (b==0111) {
cout<<"Vasa binarna kombinacija daje broj 7"<<endl;
 } else if (b==1000) {
cout<<"Vasa binarna kombinacija daje broj 8"<<endl;
 } else if (b==1001) {
cout<<"Vasa binarna kombinacija daje broj 9"<<endl;
 } else if (b==1010) {
cout<<"Vasa binarna kombinacija daje broj 10"<<endl;
 } else if (b==1011) {
cout<<"Vasa binarna kombinacija daje broj 11"<<endl;
 } else if (b==1100) {
cout<<"Vasa binarna kombinacija daje broj 12"<<endl;
 } else if (b==1101) {
cout<<"Vasa binarna kombinacija daje broj 13"<<endl;
 } else if (b==1110) {
cout<<"Vasa binarna kombinacija daje broj 14"<<endl;
 } else if (b==1111) {
cout<<"Vasa binarna kombinacija daje broj 15"<<endl;
 }
 else{
    cout<<" Unesi pravilnu binarnu kombinaciju"<<endl;
    return main();}
    }
        else {
    cout<<"UNESITE 1 ZA KODIRANJE ILI 2 ZA DEKODIRANJE"<<endl;
    return main();}
system("pause");
return 0;}

这不起作用的原因是因为前导 0。 00000111是八进制(以 8 为基数)值。 0010是 8,0100是 64,依此类推,这显然与您正在读取的 10 个基数值不匹配。

要让它工作,请删除前导 0(使它们以 10 为基数)或按照 Gaurav Sehgal 的建议进行操作并改为在字符串中读取。

     cin>>b;
     if (b==0000) {
      cout<<"Vasa binarna kombinacija daje broj 0"<<endl;
      } else if (b==0001) {
      ....

您正在尝试在此处输入二进制数字,并且已将b声明为 int 。您可能希望将b声明为 string,然后将b与不同的值(如 0000 等)进行比较。

相关文章: