كيف تتعامل C++ مع الحروف

معظم تطبيقات الحاسب تتعامل مع بيانات رقمية وكذلك نصية. وحتى يتمكن الحاسب من معالجة البيانات النصية، لا بد من تشكيل شيفرة ثنائية لترميز الحروف داخل الحاسب مكونة من سلسلة من الأصفار و الواحدات.

فالحروف لها تمثيلان: تمثيل داخلي يفهمه الحاسب وآخر خارجي للإنسان. فعلى سبيل المثال الحرف الهجائي A يمثَّل لنا بصورته المرئية والتي تبدو للعيان بالشكل A، أما داخليا فيمثل للحاسب بالشيفرة الثنائية: 1000001 وقيمتها العشرية 65. وهذا صحيح لجميع الحروف المستخدمة في الحاسب والتي يمكن تقسيمها إلى: حروف هجائية كبيرة (A…Z) وصغيرة (a…z)، الأرقام من 0 إلى 9، وحروف خاصة للتحكم. وحروف التحكم ثلاثة أنواع: حروف تنسيق، حروف ترقيم، وكذلك حروف لأغراض التحكم بالاتصالات.
تخزن الحروف في ثمانية بتات (بايت واحد) بالترميز ASCII. والترميز أو شيفرة ASCII هي اختصار American Standard Code for Information Interchange والتي تعني الترميز القياسي الأمريكي لتبادل المعلومات. وتتألف شيفرة ASCII من 256 حرفاً مقسمين إلى جزأين رئيسين: الأول يسمى بحروف ASCII القياسية (standard ASCII) والثاني يسمى بحروف ASCII الموسعة (extended ASCII).يحتوي كل قسم منهما على 128 حرفا، وبذلك يكون مجموع الحروف في الجزأين 256 حرفا وهو الحد الأكبر الذي يمكن أن يمثله بايت من المعلومات، أي 28 = 256.
تستخدم شيفرة ASCII القياسية سبعة بتات لتمثيل شيفراتها، فهي بالتالي تمثل (128) حرفاً شيفراتهم من (0) وحتى (127). أما شيفرة ASCII الموسعة فهي تستخدم ثمانية بتات لترميز حروفها، حيث أن شيفرات حروفها تتراوح بين (128) وحتى (256).
ويمكن تقسيم شيفرة ASCII القياسية إلى مجموعتين هما: حروف التحكم الغير قابلة للطباعة وشيفراتها بين (0) وحتى (32)، ونستخدم لأغراض التحكم بالاتصالات والطباعة، ومثال ذلك حرف الإرجاع CR (اختصار Carriage Return) وحرف السطر الجديد LF (اختصار Linefeed). أما المجموعة الثانية وعدد حروفها (96) حرفاً وشيفراتها تتراوح بين (33) و (127) فهي الحروف القابلة للطباعة مثل الأرقام من (0) وحتى (9) وكذلك الأحرف بنوعيها الكبيرة (A …Z) والصغيرة (a…z) وبعض الحروف الخاصة مثل علامات الترقيم ورموز العمليات الحسابية وغيرها، كما هي موضحة في الجدول التالي

0 0 1 2 3 4 5 6 7 8 9 A B C D E F
0 NUL SOH STX ETX EOT ENQ ACK BEL BS TAB LF VT FF CR SO SI
1 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US
2 SP ! # $ % & ( ) * + , . /
3 0 1 2 3 4 5 6 7 8 9 : ; < = > ?
4 @ A B C D E F G H I J K L M N O
5 P Q R S T U V W X Y Z [ \ ] ^ _
6 ` a b c d e f g h i j k l m n o
7 p q r s t u v w x y z { | } ~

                             جدول شيفرة ASCII القياسية

الجدول مرتب بطريقة يسهل فيها تحديد شيفرة كل حرف وفق النظام الست عشري والمكوّن من خانتين: الخانة الأولى يحددها رقم الصف، أما الخانة الثانية فيحددها رقم العمود. فعلى سبيل المثال، الحرف A يقع في الصف 4 والعامود 1، لذا فإن شيفرة الحرف A وفق النظام الست عشري هي 41. وفي لغة ++C تميز الأرقام المكتوبة وفق النظام الست عشري بالبادئة 0x. فالرقم 41 بالنظام الست عشري يكتب كالتالي: 0x41 ويمكن تحويله إلى النظام الثنائي بيسر

لتحويل أي عدد من النظام السداسي عشر إلى مكافئه الثنائي نتبع الآتي

1. نستبدل الخانات المكتوبة بدلالة الحروف إن وجدت في العدد بالأعداد العشرية المكافئة لها

2. نستبدل كل عدد عشري بمكافئه الثنائي المكون من أربعة خانات.

3.   ثم نضم الأرقام الثنائية مع بعضها لنحصل على العدد المطلوب

مثال

حول العدد السداسي عشر إلى مكافئه الثنائي

اولا

A=10

3=3

9=9

D=13

ثانيا

A=1010

9=1001

3=0011

D=1101

واخيرا نضم الأرقام الثنائية مع بعضها لنحصل على العدد المطلوب:

محمد إبراهيم

محمد ابراهيم مهندس حاسوب سوداني 21 عام مهتم بمجال التكنولوجيا والعالم الرقمي

‫2 تعليقات

  1. السلام عليكم ورحمة الله وبركاته
    كيف اقوم بكتابة كود بلغة ++c يقوم بادخال الشهر والسنة ومن ثم يقوم بطباعة الشهر التالي والسنة التالية …. اتمنى الرد على تعليقي …. وشكراً

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *

مقالات ذات صلة

زر الذهاب إلى الأعلى