نوشته شده توسط
vasilopita
سلام. من می خوام یک عدد رو بصورت باینری بنویسیم و در یک کاراکتر ذخیرش کنم؛ چجور می تونم باینری بنویسم. هگزادسیمال رو بلدم که با 0x شروع میشه ولی باینری رو نمی دونم.
سلام
راستش من نمیدونم چطوری میشه عدد رو در کارکتر ذخیره کرد چون خود کارکتر ها هم کد اسکی که یه عدده دارند شاید منظور شما یک رشته بوده؟
اما اگه منطق تبدیل اعداد رو بصورت باینری میخواهید اینکار با تقسیم های متوالی انجام میشه حوصله توضیح کامل ندارم قبلا یه برنامه برای تبدیل اعداد در مبناهای مختلف نوشتم ببین بدرد میخوره
//جواب تمرین 18-5 ص 223
/* باینری-عدد بر مبنای 2
برای تبدیل دسیمال به باینری عدد را بطور متوالی بر 2 تقسیم می کنیم
ودرنهایت از کنار هم قرار دادن ابتدا عدد آخرین خارج قسمت و سپس
اعداد باقیمانده از راست به چپ بدست می آید
*/
/* اوکتال-عدد بر مبنای 8
برای تبدیل دسیمال به اوکتال عدد را بطور متوالی بر 8 تقسیم می کنیم
ودرنهایت از کنار هم قرار دادن ابتدا عدد آخرین خارج قسمت و سپس
اعداد باقیمانده از راست به چپ بدست می آید
*/
/* هگزادسیمال-عدد بر مبنای 16
برای تبدیل دسیمال به اوکتال عدد را بطور متوالی بر 16 تقسیم می کنیم
ودرنهایت از کنار هم قرار دادن ابتدا عدد آخرین خارج قسمت و سپس
اعداد باقیمانده از راست به چپ بدست می آید
*/
#include <iostream>
using std::cout;
using std::cin;
using std::endl;
using std::fixed;
using std::left;
#include <cmath>
#include <iomanip>
using std::setprecision;
using std::setw;
int main()
{
int Decimal;
int Binary;
int Octal;
int Hexadecimal;
int Result;
int s;
int counter;
cout<<left;
cout<<setw(10)<<"Decimal"<<setw(15)<<"\tBinary\t"< <setw(6)
<<" Octal\t"<<setw(10)<<"Hexadecimal"<<endl;
for(int i=1;i<=256;i++)
{
//تبدیل عدد دسیمال به عدد باینری
Decimal=i;
Binary=0;
counter=0;
for(int t=Decimal;t>0;)
{
Result=Decimal/2;
s=Decimal%2;
Decimal=Result;
Binary+=s*pow(static_cast<double>(10),counter);
counter++;
t=Decimal;
}
//تبدیل عدد دسیمال به عدد اوکتال
Decimal=i;//قبل از شروع هر حلقه متغییر ها دوباره مقدار دهی میشوند
Octal=0;
counter=0;
for(int t=Decimal;t>0;)
{
Result=Decimal/8;
s=Decimal%8;
Decimal=Result;
Octal+=s*pow(static_cast<double>(10),counter);
counter++;
t=Decimal;
}
//تبدیل عدد دسیمال به عدد هگزادسیمال
Decimal=i;
Hexadecimal=0;
counter=0;
for(int t=Decimal;t>0;)
{
Result=Decimal/16;
s=Decimal%16;
Decimal=Result;
Hexadecimal+=s*pow(static_cast<double>(10),counter );
counter++;
t=Decimal;
}
Decimal=i;
cout<<setw(10)<<Decimal<<"\t"<<setw(15)<<Binary
<<"\t"<<setw(6)<<Octal<<"\t"<<setw(10)<<Hexadecima l<<endl;
}
return 0;
}