ما هو الفرق بين الموقعة و غير الموقعة المتغيرات ؟

StackOverflow https://stackoverflow.com/questions/621290

سؤال

لقد رأيت هذه المذكورة في سياق C و C++ ، ولكن ما هو الفرق بين الموقعة و غير الموقعة المتغيرات ؟

هل كانت مفيدة؟

المحلول

وقعت المتغيرات, مثل توقيع الصحيحه سوف تسمح لك أن تمثل الأرقام سواء الإيجابية والسلبية نطاقات.

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

موقعة وقعت متغيرات من نفس النوع (مثل int و byte) لهما نفس مجموعة (مجموعة من 65,536 256 الأرقام ، على التوالي) ، ولكن موقعة يمكن أن تمثل أكبر حجم عدد من المقابلة وقعت متغير.

على سبيل المثال ، unsigned byte يمكن أن تمثل القيم من 0 إلى 255, في حين signed byte يمكن أن تمثل -128 إلى 127.

صفحة ويكيبيديا على توقيع عدد تمثيلات ويوضح الفرق في التمثيل على مستوى البت ، صحيح (علوم الكمبيوتر) الصفحة جدولا يتراوح لكل توقيع/غير صحيح نوع.

نصائح أخرى

وبينما يشار اليه عادة باسم 'بت تسجيل، القيم الثنائية التي نستخدمها عادة لم يكن لديك قليلا علامة صحيح.

استخدام

ومعظم أجهزة الكمبيوتر two's-تكملة الحساب. يتم إنشاء الأرقام السالبة عن طريق اتخاذ one's-تكملة (الوجه كل بت) وإضافة واحد:

و5 (decimal) -> 00000101 (binary)
1's complement: 11111010
add 1: 11111011 which is 'FB' in hex


وهذا هو السبب بايت قعت يحمل القيم من -128 إلى +127 بدلا من -127 إلى +127:

و1 0 0 0 0 0 0 0 = -128
1 0 0 0 0 0 0 1 = -127
- - - منتديات 1 1 1 1 1 1 1 0 = -2
1 1 1 1 1 1 1 1 = -1
0 0 0 0 0 0 0 0 = 0
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 1 0 = 2
- - - منتديات 0 1 1 1 1 1 1 0 = 126
0 1 1 1 1 1 1 1 = 127
(إضافة 1-127 يعطي :)
1 0 0 0 0 0 0 0 الذي نراه في الجزء العلوي من هذا المخطط هو -128.


لو كان لدينا قليلا علامة الصحيح، فإن مجموعة قيمة تكون هي نفسها (على سبيل المثال، -127 إلى +127) لأنه محجوز بت واحد للعلامة. إذا كانت الأكثر كبير بت بت علامة، سيكون لدينا:

و5 (decimal) -> 00000101 (binary)
-5 (decimal) -> 10000101 (binary)

والشيء المثير للاهتمام في هذه الحالة هو ان لدينا كل من الصفر والسلبي صفر:
0 (decimal) -> 00000000 (binary)
-0 (decimal) -> 10000000 (binary)


ليس لدينا -0 مع two's-تكملة. ما يمكن أن يكون -0 هو -128 (أو أن يكون أكثر عمومية، واحد أكثر من أكبر قيمة موجبة). نقوم به مع واحد تكملة الرغم من ذلك؛ كل بت 1 هو سلبي 0.

ورياضيا، -0 يساوي 0. أتذكر غامضة جهاز كمبيوتر حيث -0 <0، ولكن لا أستطيع أن أجد أي إشارة إلى ذلك الآن.

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

لمزيد من المعلومات: غير الموقعة وتوقيع الأعداد الصحيحة

والمتغيرات غير الموقعة لا يمكن إلا أن أرقام إيجابية، لأنها تفتقر إلى القدرة للإشارة إلى أنها سلبية.

وهذا ما يسمى قدرة "علامة" أو "توقيع قليلا '.

ومن الآثار الجانبية هو أنه بدون قليلا توقيع، لديهم واحد أكثر قليلا والتي يمكن استخدامها لتمثيل عدد، ومضاعفة الحد الأقصى لعدد أنها يمكن أن تمثل.

وقعت المتغيرات يمكن أن يكون 0 ، إيجابية أو سلبية.

موقعة المتغيرات يمكن أن يكون 0 أو إيجابية.

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

وغير الموقعة يستخدم عندما يجب أن تكون قيمة اور إيجابي، لا قيمة سلبية هنا، إذا وقعت لمجموعة كثافة العمليات -32٬768-32٬767 إذا غير الموقعة لمجموعة كثافة العمليات 0-65535

موقعة المتغيرات هي المتغيرات التي يتم داخليا تمثل دون الرياضية علامة (زائد أو ناقص) يمكن تخزين " صفر " أو القيم الإيجابية فقط.دعونا نقول غير متغير ن بت في الحجم ، ثم أنها يمكن أن تمثل 2^n (2 السلطة ن) القيم - 0 من خلال (2^ن -1).وقعت متغير من ناحية أخرى ، 'خسر' بت واحد لتمثيل علامة ، لذلك فإنه يمكن تخزين القيم من -(2^(ن-1) -1) من خلال (2^(ن-1)) بما في ذلك الصفر.وهكذا ، وقعت متغير يمكن تخزين القيم الإيجابية والقيم السلبية و صفر.

P. S.:
داخليا الرياضية علامة قد تكون ممثلة في أحد تكمل شكل المتمم شكل أو علامة بت (على سبيل المثال:0 -> +, 1-> -)
كل هذه الأساليب بفعالية تقسيم مجموعة من قابل للتمثيل القيم في ن بت (2^n) إلى ثلاثة أجزاء ، إيجابية وسلبية صفر.

هذا هو مجرد بلدي اثنين سنتا.

آمل أن يساعد هذا.

وهذا قد لا يكون التعريف الدقيق لكنني سأعطيك مثالا: لو كنت لإنشاء عدد عشوائي الاستيلاء عليها من وقت النظام، وهنا باستخدام متغير غير موقعة هو مفيد كما أن هناك مجال واسع للأرقام عشوائية كأرقام قعت تعطي الأرقام الإيجابية والسلبية على حد سواء. وبما أن وقت النظام لا يمكن أن يكون سلبيا نستخدم متغير غير موقعة (فقط أرقام موجبة) ولدينا مجموعة واسعة من أكثر الأرقام العشوائية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top