عند لغة سي, الحروف ماهي الا نوع ارقام صحيحة من حجم بايت واحدة. كل بتة اما صفر او واحد. اذا تريد ترجمة حرف الى بتات, تختبر اعلى بتة و ترى اذا ما كانت واحدة او صفر. اذا كانت و احد فتكتب واحد, واذا صفر تكتب صفر. و لكن لغة سي لا تسمح لك باختبار بتة واحدة فقط, لازم تختبر البايت كلها. نستخدم اداة المنطق AND ونختبر اعلى بتة فقط.
AND تقارن بايتتان و تجيب بواحد اذا كانت كل بتة في موضع ما من نفس القيمة, او صفر اذا تختلفان. نحن نريد ان نختبر اعلى بتة فقط, فنقارن الحرف ب 1000,0000
الان بعد ما نختبر اعلى بتة و نطبع قيمتها, نستخدم اداة ادارة البتات و نحولها محل واحد الى اليسار و نعيد الاختبار, وهكذا حتى نطبع كل البتات الثماني.
يمكنك تغيير كميات اكثر من بتة واحدة اذا اكثرت عدد مرات التكرر من ثمانية الى ستة عشر او اثنان و ثلاثين, مثلا, و غير قيمة الاختبار, الخ.
كود PHP:
int main ()
{
char alphabet [] = "abcdefghijklmnopqrstuvwxyz";
int i, j;
char letter;
for (i = 0; i < 26; i++) {
letter = alphabet[i];
printf ("%c %x ", letter, letter);
for (j = 0; j < 8; j++) {
if (letter & 0x80) // 0x80 means 1000,0000 in binary
printf ("1");
else
printf ("0");
letter = letter << 1;
}
printf ("\n");
}
}
اذا تعرف تبرمج اّسمبلي, هذا التمرين في منتهى البساطة, لان اسمبلي تمكنك من اختبار حالة المسجلات, خاصة مسجل النتيجة, flags register. بعد دوران البتات, يحتفظ مسجل النتيجة باعلى بتة, وبدلا من اختبار بايتتين معا, فقط تسالة عن محتويات ال carry flag.
اسف عزيزي اذا كنت اخترع الاسامي و الالفاظ, انا لم ادرس بالعربية, للاسف.