2010-03-26 31 views
50

C++ neden imzasız çift sözdizimini desteklemiyor?İmzasız çift C++?

+3

Ne langs bunu destekliyorsunuz? Genellikle herhangi bir kayan nokta kullanıp kullanmadığınızı düşünür, o zaman imzasızlık neredeyse hiç ihtiyaç duymaz. – SteelBytes

+0

Hey, sözdizimi sözdizimi giderdim. –

cevap

62

Tipik kayan nokta formatları işaretsiz sayıları desteklemediğinden. Örneğin, this list of IEEE 754 formats.

Yaygın donanım tarafından desteklenmeyen bir sayısal biçim eklemek, derleyici yazıcılar için hayatı zorlaştırır ve büyük olasılıkla bu çabaya değmez.

+1

Ayrıca * fikir * kayan nokta ile. Bu ** sonsuza kadar negatif tamsayılar dahil olmak üzere herhangi bir ** numarasının temsil edilebilir olması gerekir. İmzasız sayılar bu hedefe ters düşmektedir. – unixman83

+26

Erm, hayır, konu bu değil. Ya da nokta ise, tüm kayan nokta türleri başarısızlığa mahkumdur. Bilgisayarda anlamlı bir şekilde temsil edilebilen sayılar kümesi sayılabilir ... –

13

C++ unsigned kayan nokta türlerini desteklemez, çünkü çoğu kayan nokta donanımı işaretsiz kayan nokta türlerini desteklemez. Bazı grafik kartları unsigned kayan nokta ile çalışır, ancak genellikle bir program veya kullanıcı için görünmez, dahili.

7

İşaretsiz tamsayılar, fazladan bir bit duyarlıdır ve işaretli tamsayılara biraz farklı bit anlamıyla semantik sahiptir. Şamandıralar ve çiftler her zaman işaret için (çoğu donanımda) bir miktar ayırırlar ve hiç bitmeyen bir semantiğe sahip değildirler, bu nedenle imzasız gerçek tipte bir gerçek fayda yoktur.

+9

Teorik olarak * mantı ya da üs için o biti kullanabilir, ya da aralığı ya da doğruluğu artırabilirsiniz. – Joey

+1

Peki ben kontrol etmek için devam etmeden her zaman pozitif bir sayı olduğunu kontrol etmek için imzasız bir çift istedim. Yani evet fayda var. Јοеу @ – Zammbi

+0

: (. Oldukça geç yanıt için üzgünüm) Evet, yardım edebilirdi, ama soru C imzasız çiftlerde eksikliği ++ ilgiliydi. Donanımın neden desteklemediği hakkında değildi. Konsepti C++ 'ya ekleyerek donanımınıza destek eklemeden size hiçbir şey kazandırmazsınız. –