SORU
17 Kasım 2009, Salı


Bit düzeyinde işlem ve kullanım

Bu kodu göz önünde bulundurun:

x = 1        # 0001
x << 2       # Shift left 2 bits: 0100
# Result: 4

x | 2        # Bitwise OR: 0011
# Result: 3

x & 1        # Bitwise AND: 0001
# Result: 1

Python aritmetik operatörler anlıyorum (ve diğer diller), ama asla '' operatörleri oldukça iyi. bit anladım Yukarıdaki örnekte (Python bir kitap),-shift sol ama diğer ikisi anlıyorum.

Ayrıca, bit operatörleri aslında ne için kullanılır? Bazı örnekler memnun olurum.

CEVAP
17 Kasım 2009, Salı


Bit operatörleri multi-bit değerleri, ama kavramsal olarak bir seferde bir bit üzerinde çalışan operatörler.

  • AND 1 yalnızcaher ikisi deonun girişi 1, aksi halde 0.
  • OR 1biri veya her ikisi deonun girişi 1, aksi halde 0.
  • XOR 1 yalnızcatam bironun girişi 1, aksi halde 0.
  • NOT eğer giriş 0, aksi durumda ise 0. 1.

Bunlar genellikle doğruluk tabloları en iyi şekilde gösterilebilir. Giriş olasılıklar üstüne ve ortaya çıkan dört bit (sadece tek giriş olduğundan bu durumda iki) değerleri giriş kesiştiği noktada gösterildiği bir sol.

AND | 0 1     OR | 0 1     XOR | 0 1    NOT | 0 1
---- -----    --- ----     ---- ----    ---- ----
 0  | 0 0      0 | 0 1       0 | 0 1        | 1 0
 1  | 0 1      1 | 1 1       1 | 1 0

Bir örnek, eğer sen sadece, 15 (binary 1111): bir tamsayı alt 4 biti istiyorsanız

    201: 1100 1001
AND  15: 0000 1111
------------------
 IS   9  0000 1001

Bu durumda 15 sıfır biti etkin bir filtre olarak, sıfır olarak sonuç bit zorlama hareket.

Ayrıca, >> << sık sık dahil olarak bit operatörleri, ve "shift" değeri sırasıyla sağ ve sol tarafından, belirli bir sayıda bit, atmadan bit rulo sonu sen doğru kayması ve beslenme sıfır bit diğer ucu.

Bu yüzden, örneğin:

1001 0101 >> 2 gives 0010 0101
1111 1111 << 4 gives 1111 0000

Bu durumda, başka bir örnek, bit operatörleri ise iki 4-bit değerleri istediğiniz paketi içine bir 8-bit bir kullanabilirsiniz her üç operatörleri (left-shift, and or):

packed_val = ((val1 & 15) << 4) | (val2 & 15)
  • & 15 operasyonu değerleri sadece alt 4 bit olduğundan emin olun.
  • << 4 8-bit değer bir 4-bit shift üst 4 bit içine val1 taşımak için sol.
  • | sadece bu iki birleştirir.

val1 7 ve val2 4 ise:

                val1            val2
                ====            ====
 & 15 (and)   xxxx-0111       xxxx-0100  & 15
 << 4 (left)  0111-0000           |
                  |               |
                   ------- ------- 
                          |
| (or)                0111-0100

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Jonnyriddlin1

    Jonnyriddlin

    4 Ocak 2007
  • Attempts at least

    Attempts at

    1 Ocak 2007
  • warningthepeople

    warningthepe

    21 EYLÜL 2011