قبل الدخول في موضوع الإشارات من الجيد التذكير بالعد الثانئي و العشري مثال :
ليكن لدينا العدد
2894 =(4*1)+(9*10)+(8*100)+(2+1000)
نلاحظ أن كل خانة تزداد عن سابقتها بمضاعفات العشرة و ذلك لأنه يوجد في النظام العشري 10 أعداد تمثله و كذلك في النظام الثنائي فلو كان لدينا العدد
01110101110110 = (0*2)+(1*4)+(1*8)+(0*16)+(1*32)+(1*64)+(1*128)+(0*256)+(1*512)+(0*1024)+(1*2048)+(1*4096)+(1*8192)+(0*16384)
فزادت كل خانة عن سابقتها بمضاعفات الـ2
و بالتالي التحويل من النظام الثنائي إلى العشري يتم كما سبق .
و التحويل من العشري إلى الثنائي يتم بالشكل التالي و بشكل عكسي للعملية السابقة :
للتأكد:
10111001 = (1*1)+(0*2)+(0*4)+(1*8)+(1*16)+(1*32)+(0*64)+(1*128) =1+0+0+8+16+32+0+128 =128+57 =185
signed and unsigned
ذات إشارة أو دون إشارة
لاحظ أننا لم نورد ذكر الإشارة السالبة في المقدمة السابقة و لكن هل تعتقد أن الأمر يحل بإشارة سالب فقط ؟، طبعاً لا فهناك خوارزمية لتحويل العدد من الموجب إلى نظيره السالب و هي :
قلب جميع احتمالات البتات إلى معاكسها و إضافة واحد ، مثال :
(5+)=0101 0000
1010 1111
1011 1111 =(5-)
كما نعلم و بما أن مثلاً البايت byte و هو ثمانية بتات و بالتالي 256 احتمال فإنه من العدل جعل نصفها للتمثيل السالب و النصف الآخر للموجب و بالتالي هذا البايت هو عبار عن المجال 0-127 موجب ومن 1 إلى 128 سالب و هكذا بالنسبة لباقي المساحات .
ومن هنا أستطيع أن أعتقد أن المجالات التي ترفق في كل كتاب تعليمي للمتحولات أصبحت معروفة[1] :
1- الجدول من كتاب :c plus plus introduction
و هذا كل ما يقصد من signed بشكل عام
