2017-01-21 16 views
10

özellikle, 'BITNESS' işlemcinin (32 vs 64) olmak this yayında yorumları görmek için görünmüyor:Nümerik olarak int'nin boyutunu ne belirler?

İyi cevabı. Yukarıdaki yorumlarımda da belirttiğim gibi, @ suzep136'nın bir 64-bit ARM işlemcisi kullanan bir Raspberry Pi 3 ile ilgili sayısını kopyalayabiliyorum. Taşma sorununun 64 bitlik bir mimaride neden oluşabileceği hakkında bir fikriniz var mı? Düşünebildiğim tek şey, lapack/blas'ın 32 bitlik bir çekirdek için derlenmesidir; Sanırım apt-get ile uyuşmuş. -

Nor nrlakin benim makinede örneğin C int boyutu vardır:

>>> import numpy, ctypes 
>>> 
>>> ctypes.sizeof(ctypes.c_int) 
4 
>>> numpy.array([1]).dtype 
dtype('int64') 

Peki, ne bağlıdır? Kısmi cevap here geçerli: -

Düzenleme: ev-br

Düzenleme

LAPACK tüm mimariler üzerinde 32 bit tamsayı kullanır: başka bir aday, teşekkür ev-br gidiyor. Teşekkürler Goyo. Bunu kopyaladım ve CW yaptık, böylece PyPy veya Jython'da ne olduğu gibi daha ince noktaları ekleyebilirsiniz. Ayrıca bu seçim için daha derin nedenlerin olup olmadığı ile ilgilenmek isterim.

+0

'int'' 'numpy.dtype (int)' kullanarak karşılık gelen veri türünü denetleyebilirsiniz. –

+0

@EliSadoff teşekkürler, ama bu sadece bana ne veriyor, neden değil. –

+0

LAPACK, tüm mimariler üzerinde 32 bit tam sayı kullanıyor –

cevap

1

Goyo numaralı telefondan kredi almak için çok mütevazı olan kullanıcı. İlgili ancak farklı bir question cevabına bakın.

Numpy'deki varsayılan tamsayı türü numpy.int_ şeklindedir, takip eden alt çizgiyi gördüğünüzden emin olun. Varsayılan olarak, C long1.

0

Tamam, bu yüzden sorunuzu yanlış anlamış olabilirim, ancak Numpy Documentation'a bir göz attığımda, tahminim, sistem mimarisine verilen maksimum bit boyutunun yukarı veya aşağı gidebilmesini temel alarak bit değerlerini atamasıdır. Temel olarak, tamsayı "kapsayıcısının" yalnızca 8 veya 16 bit uzunluğunda olması gerektiğini belirtmediğinizden, 64 bitlik bir makinede mümkün olan en büyük kapsayıcıya varsayılan olarak ayarlanmıştır.

Python bitlerinin sayısını bulmak istiyorsanız, yerleşik bir "bit_length()" işlevi vardır. Buradan bakın: https://docs.python.org/3.6/library/stdtypes.html#int.bit_length

Bu sorunun cevabını umuyoruz.

+1

Hayır, tam olarak ne olduğu değil. Bir anlamda, sorunun tam anlamı, siz ve ben ve başkalarının naif olarak aldıkları şeyin doğru olmadığıdır. –

İlgili konular