Bit operatörleri nelerdir?
Sadece eğlence için kod yazan biri değilim ve gerçekten bu tür şeyler bu bit operatörleri beni gerçekten kaçar gibi akademik ve / veya profesyonel bir ortamda dalmıştır, olmadı.
Görünüşe göre bit düzey işlemleri destekleyen JavaScript, hakkında bir makale okuyordum. Bu işlemi yerlerde bahsedilen görüyorum, ve ne olduğunu anlamak için okuma konusunda denedim, ama ben sadece onu almak için görünmüyor. Onlar nelerdir? Net örnekler harika olurdu! :D
Sadece bir kaç soru daha - bit düzey işlemleri bazı pratik uygulamalar nelerdir? Onları ne zaman kullanabilirsiniz?
CEVAP
Kimse beri gündeme olan bu yararlı neden olan bir konu
Bayraklar ile çalışırken, bit düzey işlemleri çok kullanırım. Bir operasyon için bayraklar bir dizi geçmek istiyorum (Dosya.örneğin, Açık modunda Okuma ve Yazma modu ile hem etkin), tek bir değer olarak onları geçmek. Bu olası her bayrak bir bitset (byte, short, int veya long kendi bit atayarak gerçekleştirilir. Örneğin:
Read: 00000001
Write: 00000010
Eğer pas okumak VE yazmak istiyorsanız, o zaman ikiye birleştiren geçmesi (OKUMA | YAZMA)
00000011
Hangi diğer ucunda gibi çözülebilecek:
if ((flag & Read) != 0) { //...
kontrol eden
00000011 &
00000001
verir
00000001
bayrağı belirtin yani 0, OKUMAK değil.
XOR çeşitli bit geçiş yapmak için kullanabilirsiniz. Yön girişi belirtmek için bir bayrak (Yukarı, Aşağı, Sola, Sağa) kullanarak bunu kullandım. Eğer bir sprite yatay olarak hareket ediyorsa, örneğin, ve bunu düzeltmek istiyorum:
Up: 00000001
Down: 00000010
Left: 00000100
Right: 00001000
Current: 00000100
Ben sadece kapalı ve sağdan SOLA dönecek olan akım değeri (SOL | SAĞ), bu durumda XOR.
Bit Değişen çeşitli durumlarda yararlıdır.
x << y
aynı gibi
x * 2y
eğer hızlı bir şekilde iki güç ile çarpın, ama üst içine 1-bit bir bit kayması dikkat etmek gerekir, - bu imzasız değilse sayıyı negatif yapar. Verilerin farklı boyutları ile uğraşırken de işe yarayabilir. Örneğin, dört bayt tamsayı okuma:
int val = (A << 24) | (B << 16) | (C << 8) | D;
Bir en önemli bayt varsayarak ve D en azından. Sonunda o da şu:
A = 01000000
B = 00000101
C = 00101011
D = 11100011
val = 01000000 00000101 00101011 11100011
Renkleri genellikle bu şekilde (en önemli bayt veya gözardı Alfa olarak kullanıldıĞında) saklanır:
A = 255 = 11111111
R = 21 = 00010101
G = 255 = 11111111
B = 0 = 00000000
Color = 11111111 00010101 11111111 00000000
Değerleri yeniden bulmak için, sadece altta olana kadar sağa bit kaydırma, kapalı kalan üst düzey maske biti sonra:
Int Alpha = Color >> 24
Int Red = Color >> 16 & 0xFF
Int Green = Color >> 8 & 0xFF
Int Blue = Color & 0xFF
0xFF 11111111 aynıdır. Yani aslında, Kırmızı için, bu yapıyor olurdu:
Color >> 16 = (filled in 00000000 00000000)11111111 00010101 (removed 11111111 00000000)
00000000 00000000 11111111 00010101 &
00000000 00000000 00000000 11111111 =
00000000 00000000 00000000 00010101 (The original value)
IIS yerine Cassini kullanarak (dez)ava...
İşleme vektörler büyük performans AS3 ...
Guava ve apache eşdeğer kütüphaneler a...
MySQL için en uygun varchar boyutları ...
Neden isimsiz ad kullanılır ve faydala...