• 0
Mr.B

التعامل مع البتات والبايتات والعمليات المنطقية عليها

سؤال

16 إجابة على هذا السؤال .

  • 0

ما شاء الله عمل متعوب عليه ... قرأته كاملاً ... ولكن للأسف فهو موجه للمستوى تحت المبتدئ ... على كل حال مفيد جدا لهم ...

ولكن هناك عدة ملاحظات أرجو منك تقبلها بصدر رحب ...

أولا : أخطاء إملائية :

هناك ثلاث أربع أنظمة عدّ

* والنظام الأقل إستخدام النظام الثماني. وأعداده :

0, 1, 2, 3, 4, 5, 6, 7, 8

أظن أن الخطأ واضح لديك ... جزاك الله خيراً ...

ثانياً: أخطاء علمية :

النظام الثنائي ليس بنظام حقيقي وغير مُستخدم عند مستوى البرامج

هذه أو لمرة أسمع مثل هذا الكلام .؟؟

تشفير خفيف (لاتستخدمه لإخفاء بيانات حساسة فهو تشفير ضعيف ويُمكن كسره بسهولة نسبية).

غريب ..قرأت موضوعاً للأخ خالد الشايع .. يصمم فيه تشفير غير قابل للكسر بxor ..

typedef struct _LedGroup {
unsigned char led1: 1,
led2: 1,
led3: 1,
led4: 1,
led5: 1,
led6: 1,
led7: 1,
led8: 1;
} LedGroup;

ما هي هذه الطريقة في كتابة المتغيرات !!!

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

فهرسة المقال : على الأقل أخبرنا ما هي النقاط التي ستشرحها في مقالك .. حتى لا نضطر لقراءة المقال كاملا دون فائدة ..

جزاك الله خيراً ... الموضوع ممتاز لمن لا يعرف شيئاً عن العمليات المنطقية ...

والسلام عليكم

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

+1

موضوع مفيد جدا, تم التقييم بخمس نجوم.

بارك الله فيك.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

(1- +2) موضوع جميل أخي جاري القرائة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شرح رائع ومفصلcool.gif

استفدت كثيرا من هذا الكورس و صححت بعض الأخطاء و أزلت الكثير من اللبس في بعض الأشياء التي كانت مبهمة بالنسبة لي في السابقwink.gif

+1

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

@مصطفى : يارجل أي مستوى تحت المبتدئ :lol: ؟ كثير من المبرمجين المتمكنين لايعرفون تلك العمليات. أعد قراءة الموضوع بتركيز وستجد أنه أكثر من كونه عمليات منطقية.

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

- موضوع التشفير ففعلاً تشفير الـxor ضعيف جداً وكلما كبر الملف أو الرسالة زادت قابلية كسرة. يكسر بطرق أعرف منها طريقة

. هناك خورزميات أكثر تعقيد وقوة ,مثل DES, ورغم ذلك تعد الآن ضعيفة.

- موضوع الـbit fields بينت طريقة تلك البنية بعد الكود. يمكنك التوسع به بالقراءة أحد هذه المقالات :

http://www.arabteam2000-forum.com/index.php?showtopic=225234

http://msdn.microsoft.com/en-us/library/yszfawxh%28v=vs.80%29.aspx

http://publications.gbdirect.co.uk/c_book/chapter6/bitfields.html

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

حياكم الله شباب وإن شاء الله إستفدتم.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
بالنسبة لموضوع الصفر والواحد فهو "رمز" لوجود التيار أو عدمه, فلا يوجد صفر أو واحد, شرحت ماعنيه بعد الإقتباس

وكذلك أخي فإن جميع الأرقام هي مجرد رموز ..مثلاً لا يوجد شيء اسمه 9 إنه رمز للدلالة على الكمية .. ويمكن التعامل معه كقيمة مجردة ... ولكن بالنهاية هي رموز يمكن استبدالها ..

الآن يُمكن وضعه صفر بأي من هذه المُتغيرات هكذا ledgroup.led2 = 0 أو 1 هكذا ledgroup.led2 = 1. طبعاً خجم أيّ من ledX يساوي 1 بت تماماً وهذا يعني أنك إما أن تضع 0 أو 1 فقط.

رائع ... أسحب كلامي السابق ... هذه المقالة تنقل من هم دون المبتدئ (في العمليات المنطقية)إلى فوق المتوسط على الأقل (في استخدام العمليات المنطقية )

جزاك الله خيراً... وشكراً لأنك تحملتني ...

بخصوص التشفير هذا هو موضوع الأخ خالد الذي حدثتك عنه ...

استفدنا جزاك الله خيراً ..

والسلام عليكم

تم تعديل بواسطه مصطفى 36a2
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

الموضوع فعلا يستحق التقييم ب 5 نجوم

صراحة Mr.B امتعتنا بعدة مواضيع من العيار الثقيل فى الفترة الأخيرة

لك الشكر على هذا المجهود ولكننا لم نكتفى بعد وننتظر المزيد :)

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

موضوع جيد, أزال كثيرا من اللبس كنت أقع فيه

+1

لكن لم أستطع تقييم الموضوع بالنجوم :blink:

[#10345] You do not have permission to rate this topic.

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

+1

 

موضوع رائع من انسان رائع 

 

تحياتي أستاذ

-1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

فعلا درس رائع , بارك الله فيك

عندي استفسار بسيط

انت قلت في بعض البرامج تجد شىء مثل

unsigned char number = (unsigned char) -1;

و الذي سيعطينا القيمة القصوى لهذا المتغيير في هذا المثال يعني 1111 1111, حسب كلامك -1  تعني 0001 1000

كيف 1111 1111 = 0001 1000

 

شكرا على الدرس

 

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0
حسب كلامك -1  تعني 0001 1000

 

يوجد أكثر من نظام لتمثيل الأعداد السالبة و المشهور هو Two complement  حيث تقوم بعكس البتات التى يستهلكها الرقم داخل مساحة محددة و من ثم تقوم بإضافة واحد لهم.

 

سنأخذ النوع signed char على سبيل المثال حيث مساحته قد تكون 8 بت و بالتالي الرقم 510 سيكون 01012 0000 و عملية تحويل 510 إلى 10-5 ستتم كالتالي:

-> 5         ; 5 in decimal-> 0000 0101 ; 5 in binary-> 1111 1010 ; flip bits-> 1111 1011 ; add one, this is -5 in binary

و لتحويل 110 إلى 10-1:

-> 1         ; 1 in decimal-> 0000 0001 ; 1 in binary-> 1111 1110 ; flip bits-> 1111 1111 ; add one, this is -1 in binary

و الله ولي التوفيق

2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

شكرا C++er 

الان اتضحت الصورة

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

السلام عليكم

موضوع مميز يا استاد

درست تقريبا الشطر الأول من الدرس

لدي بعض الاسفسارات

بخصوص علمية النفي not دكرت انها تقوم بنفي اي عدد

فمتلا ماهو نفي العدد 5؟؟ انا اعرف انها تنفي 0 الى 1 و تنفي اي عدد الى 0

ورمزها في السي ! وليس رمزها ~ 

المرجو التوضيح

+

لم نقم بعمل شيء فعلياً, فـAND س مع صفر ستعطي س. ولكن الجزء الحقيقي يبدأ هنا : 

 

على ما اضن تتكلم عن Or وليس and

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

ورمزها في السي ! وليس رمزها ~

النفي تتم على المتغيرات المنطقية ذات النوع bool و تقوم بتحويل true إلى false و تقوم بتحويل false إلى true و المعامل ! يسمى logical-not.

المعامل ~ يستخدم للحصول على معكوس البتات داخل المتغيرات ذات الأنواع الرقمية الصحيحه و يسمي bitwise-not أو bitwise-negation  أو complement.

 

و الله ولي التوفيق

تم تعديل بواسطه C++er
2

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يعني لو كان لدينا متغير يحتوي على القيمة

0xff

وطبقنا عليه عملية النفي

ستصبح قيمته

0x0

؟؟؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

يعني لو كان لدينا متغير يحتوي على القيمة

0xff

وطبقنا عليه عملية النفي

ستصبح قيمته

0x0

؟؟؟

أولا: كما ذكرت لك إسمها ليس النفي و إنما معكوس القيمه.

ثانيا: إذا كان حجم نوع المتغير 8 بت فالإجابة نعم و إذا كانت مساحته أكبر من 8 بت حينها ستصبح اول 8 بت بصفر و بقية البتات بواحد.

 

 

و الله ولي التوفيق

1

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .