Pratik Bit Teknikleri
Yaygın teknikler
Pratik Bit Teknikleri, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, C Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. C Academy kursu toplamda 4 dersten oluşur.
Yararlı Bit Hileleri
Bit düzeyinde işleçleri anladığınızda, bir dizi kısa ve pratik hile kullanılabilir hâle gelir. Bunlar hızlıdır ve gerçek kodlarda sıkça görülür.
Şimdi en yaygın olanlarını inceleyelim.
#include <stdio.h>
int main(void) {
unsigned x = 6;
printf("x & 1 = %u (odd if 1)\n", x & 1);
return 0;
}Çift veya Tek
En düşük bit, tekliği veya çiftliği belirtir. x & 1, tek sayılar için 1, çift sayılar için 0'dır.
#include <stdio.h>
int main(void) {
for (unsigned x = 0; x < 5; x++) {
printf("%u is %s\n", x, (x & 1) ? "odd" : "even");
}
return 0;
}İkinin Kuvveti Denetimi
Pozitif bir sayı, tam olarak bir biti ayarlanmışsa ikinin kuvvetidir. x & (x - 1) ifadesi yalnızca bu durumda 0 olur.
#include <stdio.h>
int is_pow2(unsigned x) {
return x != 0 && (x & (x - 1)) == 0;
}
int main(void) {
printf("%d %d %d\n", is_pow2(16), is_pow2(18), is_pow2(1));
return 0;
}En Düşük Ayarlanmış Biti Temizleme
x & (x - 1), en düşük ayarlanmış biti temizler. Hızlı ayarlanmış bit sayımının temeli budur.
#include <stdio.h>
int main(void) {
unsigned x = 0b10110;
printf("before: %u\n", x);
printf("after: %u\n", x & (x - 1));
return 0;
}En Düşük Ayarlanmış Biti Ayırma
x & (-x), en düşük ayarlanmış biti ayırır ve yalnızca o biti açık bırakır.
Bu işlem, ikinin tümleyeni gösterimine dayanır.
#include <stdio.h>
int main(void) {
unsigned x = 0b10110;
printf("lowest set bit = %u\n", x & (-x));
return 0;
}Ayarlanmış Bitleri Sayma
En düşük ayarlanmış biti art arda temizlemek, ayarlanmış bitlerin sayısı kadar adımda kaç bitin ayarlanmış olduğunu bulur.
#include <stdio.h>
int popcount(unsigned x) {
int n = 0;
while (x) { x &= (x - 1); n++; }
return n;
}
int main(void) {
printf("%d\n", popcount(255));
printf("%d\n", popcount(0b1010));
return 0;
}Geçici Değişken Olmadan Takas
XOR takası, ek depolama kullanmadan iki tamsayıyı yer değiştirir.
#include <stdio.h>
int main(void) {
int a = 3, b = 8;
a ^= b; b ^= a; a ^= b;
printf("a=%d b=%d\n", a, b);
return 0;
}İkinin Sonraki Kuvvetine Yuvarlama
En yüksek biti aşağı doğru yaydıktan ve ardından 1 ekledikten sonra, işaretsiz bir değeri ikinin sonraki kuvvetine yuvarlayabilirsiniz.
#include <stdio.h>
unsigned next_pow2(unsigned v) {
v--;
v |= v >> 1; v |= v >> 2; v |= v >> 4;
v |= v >> 8; v |= v >> 16;
return v + 1;
}
int main(void) {
printf("%u\n", next_pow2(17));
printf("%u\n", next_pow2(100));
return 0;
}Bitlerin Farklı Olup Olmadığını Denetleme
İki değer, tam olarak a ^ b ifadesinin ayarlanmış bitlerinin bulunduğu konumlarda farklı bitlere sahiptir. Bu bitleri saymak Hamming uzaklığını verir.
#include <stdio.h>
int main(void) {
unsigned a = 0b1101, b = 0b1011;
unsigned diff = a ^ b;
int count = 0;
while (diff) { diff &= diff - 1; count++; }
printf("hamming distance = %d\n", count);
return 0;
}Dallanma Olmadan Mutlak Değer
İşaret bitini kullanarak if olmadan mutlak değer hesaplayabilirsiniz. Maske, negatif sayılar için tümü 1, negatif olmayan sayılar için tümü 0'dır.
#include <stdio.h>
int main(void) {
int x = -42;
int mask = x >> 31;
int abs = (x + mask) ^ mask;
printf("abs = %d\n", abs);
return 0;
}Dizine Göre Bit Ayarlama
Çalışma zamanında hesaplanan rastgele bir bit konumunu ayarlamak için kaydırma ve OR işlemlerini birleştirin.
#include <stdio.h>
int main(void) {
unsigned v = 0;
int positions[] = {1, 3, 5};
for (int i = 0; i < 3; i++) {
v |= (1u << positions[i]);
}
printf("v = %u\n", v);
return 0;
}Hızlı Kontrol
Bit hileleri hakkındaki bilginizi sınayın.
Özet
Pratik bit hilelerini öğrendiniz:
x & 1sayının tek veya çift olduğunu sınar.x & (x - 1)en düşük ayarlanmış biti temizler ve ikinin kuvvetlerini algılar.x & (-x)en düşük ayarlanmış biti ayırır.- Popcount, XOR takası, Hamming uzaklığı ve dallanmasız mutlak değer.
Yapay zeka eğitmeniyle C öğren — ücretsiz
Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.
- Kurslar
- 39
- Dersler
- 144
Sıkça Sorulan Sorular
“Pratik Bit Teknikleri” dersi ücretsiz mi?
Evet — “Pratik Bit Teknikleri” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve C Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. C Academy kursu toplamda 4 dersten oluşur.
“Pratik Bit Teknikleri” dersinde ne öğreneceğim?
Yaygın teknikler C Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
C Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te C Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.
“Pratik Bit Teknikleri” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu C Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her C Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Bit Düzeyi İşleçler
- Kaydırmalar
- Bit Maskeleri ve Bayraklar
- Pratik Bit Teknikleri