Thread overview
| işlecinin sonuç aralığı nedir?
April 10, 2010

Soruyu çok iyi anlamadım ama anladığım kadarıyla tahmin etmeye çalışayım:

C en büyük değeri bence a+b kadar olur.

Buna örnek Andrei zaten vermiş. 3 ve 4.

C'nin en küçük değeride max(a,b) olur. Yani A daha büyük ise A, B daha büyükse B.

Yani C=A|B'nin tanım aralığı max(A,B)<=C<=A+B (<=: Küçük eşit,** max(a,b)** hangi sayı daha büyükse onun değeri.)

Sanırım bunun bilinememesinin sebebi 2lik sisteme dönüştürülmesi.

Acaba yukarıda söylediğim şey sorunun cevabı mı ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 10, 2010

Andrei Alexandrescu, bit işlemleriyle ilgili oldukça zor bir soru soruyor:

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=108765

Henüz etkin bir çözümü bulunabilmiş değil.

Soru: a'nın ve b'nin değer aralıklarını biliyorsak, yani her ikisinin de en küçük ve en büyük değerlerini biliyorsak; ikisinin bit düzeyinde veya'lanmasının değer aralığı nedir?

c = a | b;

Yani c'nin alabileceği en küçük ve en büyük değerleri, diğer ikisinin en küçük ve en büyük değerlerinden bulabilir miyiz?

Ustaların zorlandıklarını görmek güzel... :)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2010

Ben soruyu yanlış anlamış olmalıyım. Ben soruyu şöyle düşündüm: c=a|b ise c'nin tanım aralığını söyleyeniz.

Yanıt: max(A,B)<=C<=A+B

4|2'de 6 ediyor ve benim verdiğim tanım aralığına uyuyor(max(4,2) yani 4 4+2=6 yani 6. bu değer kesinlikle 4=<C=<6 aralığında olmalı. Ve oluyor. Ama sizin sorduğunuz soru farklı. ). Ama sizin(ve Andrei'nin) sorduğu soru daha başka. O soruyuda anladığımda ona göre formülü değiştirim

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2010

Orada Andrei ve diğer çözüm bulduklarını sananlar yanılıyorlar. :D Ne en küçük değer için verdikleri doğru, ne de en büyük değer için.

Galiba sorun şuradan kaynaklanıyor: | işleci aslında değerlerle değil, değerleri oluşturan parçalarla ilgili...

Bu soru, işaretli sayılarda bambaşka bir sorun! :) Onu gözardı edersek, şimdilik gördüğüm tek doğru çözüm şu:

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=108813

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 11, 2010

Alıntı (canalpay):

>

C en büyük değeri bence a+b kadar olur.

Buna örnek Andrei zaten vermiş. 3 ve 4.

O sayılarda doğru çıkması tesadüf. Zaten bir noktadan sonra soruyu Andrei de unuttu ve min_a ve min_b'nin 0 olduğunu varsaymaya başladı. :D

Alıntı:

>

C'nin en küçük değeride max(a,b) olur. Yani A daha büyük ise A, B daha büyükse B.

Çok yanılmışlar ve kafaları karışmış. :) [min_a,max_a] aralığında bir sürü sayı, [min_b,max_b] aralığında da bir sürü sayı olabilir.

Bu sayıların bit desenleri ilginç şekillerde örtüşebilir ve o yanıt da yanlış olabilir.

Örneğin min_a ve max_a'nın ikisi de 4, ve min_b ve max_b'nin ikisi de 2. c için tek bir değer olabilir: 4|2 == 6. min_c ve max_c 6'dır.

Alıntı:

>

Sanırım bunun bilinememesinin sebebi 2lik sisteme dönüştürülmesi.

İkilik sistem olduğu doğru tabii ama dönüştürme yok; çünkü bütün sayılar zaten ikili sistemde ve '|' işleci bitler üzerinde çalışıyor.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

April 12, 2010

Birisi hızlı bir çözüm buldu:

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=108880

Benim katkım, daha önce önerdiği çözümlerin hatalarını göstermek oldu. ;)

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]