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

Byte to bits

مغلق
بدأه نحلة نشيطة في 24 مارس 2004 · 2 رد · 454 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم و رحمة الله و بركاته ،

أقوم بكتابة برنامج يقرأ Array عنصراً عنصراً و يقوم بتحويل كل عنصر ( من نوع Integer) إلى 8-bits بحيث يُخزن كل بت من الثمان في Array خاصة به . الـ array من نوع unsigned char .

قُمت بذلك عن طريق تكوين array من نوع Glubyte تحتوي على ثمانية عناصر بالطريقة التالي : bit7[8] = { 1,0,0,0,0,0,0,0} .

و من ثم قُمت بالتالي :

bit7array[j] = array[j] && bit7[k] ;

for i,j takes the size of the array and k goes from 1 .. 8 ..

للأسف لم أحصل على نتيجة مرضية .. و هذا ما دفعني للسؤال هنا أين الخطأ أو ما إذا كانت هناك طريقة أفضل ..

جزيل شكري مقدما لأي مساعدة ..

كما أريد أن أكون .. بأمر الله أكون

#2

السلام عليكم,

اسمح لي فأنا لم أفهم كثيرا ما تريد عمله. ولكن إذا كنا نريد أن نستعمل Bit فيمكن مثلا أن نعمل على الطريقة التالية , سأعطي مثالا على 8 Bits ولكن يمكن أن نستخدمها على غيرها . نفترض أنه عندنا Byte نسميه مثلا OriginByte مكون من 8 Bits التالية :76543210 بالطبع هذا لا يمكن أن يكون محتوى Bit ولكن هذه الأرقام هي مكان البت 0 يعني الأول يمينا إلى آخره.فإذا أردت أن آخذ كل Bit منفرد يمكن أن أقوم بما يلي :

Bit0=OriginByte & 1

هذا يعني أن قيمة Bit0 ستكون قيمة البت الأول أو البت صفر كما سبق أن ذكرناه وهذا علما أن 1 ستكون قيمة البت الأول 1 وباقي البتات ستكون صفر وحين نعمل & وهي Logical and فهذا سيجعل كل ابتات السبعة من 1 إلى 7 تساوي 0 إلا البت رقم 0 الذي سيحافض على قيمته.

وإذا أردنا ان نأخذ البت الثاني أو البت 1 سنعمل دورة على اليمين :

ByteTurned = OriginByte >> 1

هذا سيجعل ByteTurned يكون مثل OrigineByte لكن البت 1 سيأخذ مكان البت صفر والبت 2 يأخذ مكان البت 1 إلى آخره - وعلى سبيل المثال هذه طريقة سريعة للقسمة على 2 - وبعد هذا نأخذ البت الثاني كما سبق :

Byte1=ByteTurned & 1

نعمل دورة أخرى على اليمين ونأخذ البت 3 إلى آخره.

إلى اللقاء.

#3

شكراً أخي الكريم :)

كما أريد أن أكون .. بأمر الله أكون

هذا الموضوع مغلق.

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