الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف يتم تحويل الأرقام من Hex إلى Dec عند العرض ؟؟

بدأه مصطفى 36a2 في 7 سبتمبر 2012 · 8 رد · 2,374 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم ..

يتم تخزين الأرقام في الذاكرة بصيغتها الثنائية ..شيء معروف ..

والتحول من ثنائي إلى ست عشري بسيط جدا يمكننا القيام به ذهنيا ...

ولكن التحويل إلى عشري أمر معقد بعض الشيء ... 10101 =2^0+2^2 +2^4 ليست عملية سهلة على الحاسب ...

السؤال هو ... معظم الأرقام التي تؤخذ من المستخدم تكون بشكلها العشري ... وكذلك عندما يتم عرضها تكون بشكلها العشري ..

العملية الخفية في التحويل من ثنائي إلى عشري ... كيف تتم ..

وشكراً ...

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 8 سبتمبر 2012 في 01:24

#2

لو إفترضنا أن الحاسوب فعلاً يجري التحويل من الثنائي وقام بحساب 10101 وظهرت بطريقة ما 24. كيف سيخزنها.. اليس على شكل 10101 مره أخرى. هل ترى مشكلة سؤالك؟

#3

عزيزي Mr.B عنوان سؤالي .. كيف يتم التحويل قبل العرض ..

لأن كل ما يتم عرضه هو عبارة عن char دائماً وأبداً ... يعني عند عرض أي شيء يُعرض على أنه حرف لا رقم ...

والسؤال طرحته من قبل ...بس ما حصلت على إجابة بالعكس المزيد من الأسئلة ...

هل سؤالي غير واضح ؟؟؟

ثم إن 10101 هي smile.gif21 لا مشكلة المهم هو السؤال

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 9 سبتمبر 2012 في 18:15

#4

لايوجد هناك أي نوع من التحويل عند العرض, فلا بتم عمل شيء أكثر من رسم البكسلات وفق خرائط مجهزة مسبقاً. إطلع على هذه الصفحة "دعم العربية" فستعطيك الفكرة.

#5
اقتباس
لايوجد هناك أي نوع من التحويل عند العرض, فلا بتم عمل شيء أكثر من رسم البكسلات وفق خرائط مجهزة مسبقاً

والله أعلم هذا الكلام ...

لكن هذا يحدث بعد تحويل العدد إلى string ... يعني البكسلات المضيئة لعرض حروف على الشاشة لها خرائط مسبقة مخزنة ... أعلم هذا ولله الحمد ...

وأنا أسأل عن كيفية هذا التحويل من رقم مخزن بشكل ثنائي إلى رقم مخزن في string بشكله العشري ... فقط لا غير

ملاحظة :شكراً لك على الرابط أفادني ..ولكن لا علاقة له بالسؤال ..

تم تعديل هذه المشاركة بواسطة مصطفى 36a2 في 9 سبتمبر 2012 في 18:47

#6
#include <stdio.h>
#include <string.h>

int main(int argc, char **argv)
{
    const int number = 30;
    char string[3];

    sprintf(&string[0], "%d", number);

    printf("%s\n", string);

    return 0;
}

وهاقد تحول من 30 (رقم) إلى "30" (نص).

1
#7

أخي العزيز Mr.B أشكرك على اهتمامك وأعتذر منك لأني أزعجك ...

اقتباس
وهاقد تحول من 30 (رقم) إلى "30" (نص).

بالفعل طريقة رائعة لم أكن أعرفها من قبل ... ولكن ..

لقد وضعت سؤالي في قسم الأسمبلي لأنني أسأل عن العملية التي قوم بها الجهاز ضمنياً ...يعني عملية داخللية بامتياز ...

لكن ان اعتبرت السؤال برمجي .. حسناً أعترف لك .. سؤالي غير واضح ...

سأشرحه بكود بسيط جداً ...

#include <iostream>
using namespace std;
int main()
{
	int number;
	cin>>number;
	cout<<dec<<number<<endl;
	cout<<hex<<number<<endl;
	cout<<oct<<number<<endl;
	return 0;
}

أريد أن أفهم مايقوم به لتحويل العرض بين الأنظمة ... الأصل أن الرقم ثنائي ... يتم تحويله إلى عشري في الحالة الطبيعية .. وهو أصعب تحويل على الإطلاق ..

ويمكن أن يتم العرض ثمانيا أو ست عشرياً وهو في غاية السهولة ...

سؤالي برمجياً باختصار : ما هي آلية عمل std::dec ... وشكراً

#8

تفضل أخى العزيز مصطفى , هذا موضوع (انجليزى) , يتكلم على نفس موضوعك .

أتمنى ان يفيدك أذهب إلى الموضوع

2

||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||


egypt_coa.gif


||||||||||||||||||||||||||||||||||||


||||||||||||||||||||||||||||||||||||

#9

شكراً لك أخي مستر برمجة ..بالفعل كنت قد حصلت على كتاب من صديقي في السنة الثالثة (هناك مادة عندنا اسمها بنيان الحاسب) أجابت عن سؤالي ...

وشكرا جزيلا لك على الرابط مفيد 99.99% جزاك الله خيراً..

ولولا أن مدة السؤال انتهت لكنت رشحت اجابتك كأفضل الاجابات...ان شاء الله في سؤال آخرsmile.gif

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…