Kaydırmalar
Sola ve sağa kaydırma
Kaydırmalar, CoddyKit'te ücretsiz bir C Academy dersidir. Bu, 4 dersinin 2. 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.
Bitleri Kaydırma
Kaydırma işleçleri, bir tamsayının tüm bitlerini belirli sayıda konum kadar sola veya sağa taşır.
Sola kaydırma <<, sağa kaydırma ise >> işlemidir.
#include <stdio.h>
int main(void) {
unsigned x = 1;
printf("1 << 3 = %u\n", x << 3);
return 0;
}Sola Kaydırma Çarpar
n konum sola kaydırma, işaretsiz bir değeri 2'nin n'inci kuvvetiyle çarpar.
1 << 3 8, 5 << 1 ise 10 eder.
#include <stdio.h>
int main(void) {
printf("5 << 1 = %u\n", 5u << 1);
printf("3 << 4 = %u\n", 3u << 4);
return 0;
}Sağa Kaydırma Böler
n konum sağa kaydırma, işaretsiz bir değeri 2'nin n'inci kuvvetine böler; sağ uçtan taşan bitler atılır.
20 >> 2 5 eder.
#include <stdio.h>
int main(void) {
printf("20 >> 2 = %u\n", 20u >> 2);
printf("7 >> 1 = %u\n", 7u >> 1);
return 0;
}İkinin Kuvvetleri
1'i sola kaydırmak, ikinin kuvvetlerini üretmenin en hızlı yoludur.
1 << n, ikinin n'inci kuvvetidir.
#include <stdio.h>
int main(void) {
for (int n = 0; n < 6; n++) {
printf("2^%d = %u\n", n, 1u << n);
}
return 0;
}Kaydırmayı Görselleştirme
Önceki ve sonraki bitleri yazdırmak, bit deseninin nasıl kaydığını gösterir.
#include <stdio.h>
void print_bits(unsigned char v) {
for (int i = 7; i >= 0; i--) putchar((v >> i) & 1 ? '1' : '0');
putchar('\n');
}
int main(void) {
unsigned char v = 0b00000110;
print_bits(v);
print_bits(v << 2);
return 0;
}Bir Biti Ayıklama
i numaralı biti okumak için değeri i kadar sağa kaydırın ve 1 ile maskeleyin.
Sonuç 0 veya 1 olur.
#include <stdio.h>
int main(void) {
unsigned v = 0b10110;
for (int i = 0; i < 5; i++) {
printf("bit %d = %u\n", i, (v >> i) & 1);
}
return 0;
}Bit Bit Değer Oluşturma
Bitleri yerlerine kaydırıp OR ile birleştirerek bir sayı oluşturabilirsiniz.
#include <stdio.h>
int main(void) {
unsigned v = 0;
v |= (1u << 0);
v |= (1u << 2);
v |= (1u << 4);
printf("v = %u\n", v);
return 0;
}İşaretli Değerlerde Sağa Kaydırma Uyarısı
Negatif işaretli bir tamsayıyı sağa kaydırmak uygulamaya bağlıdır: işaret bitini kopyalayabilir.
Öngörülebilir bit işlemleri için unsigned türlerini tercih edin.
#include <stdio.h>
int main(void) {
int s = -8;
printf("-8 >> 1 = %d (implementation-defined)\n", s >> 1);
unsigned u = 8;
printf("8u >> 1 = %u\n", u >> 1);
return 0;
}Aşırı Kaydırmadan Kaçının
Türün genişliğine eşit veya daha büyük miktarda kaydırma yapmak tanımsız davranıştır.
32 bitlik bir değeri 32 veya daha fazla bit kaydırmaya izin verilmez.
#include <stdio.h>
#include <limits.h>
int main(void) {
printf("unsigned has %zu bits\n", sizeof(unsigned) * CHAR_BIT);
printf("Safe shift 1u << 31 = %u\n", 1u << 31);
return 0;
}Kaydırma ve Maskeyi Birleştirme
Kaydırma ve maske birlikte birkaç bitten oluşan bir alanı çıkarır. Burada bir baytın ortasındaki 4 biti alıyoruz.
#include <stdio.h>
int main(void) {
unsigned v = 0b11010110;
unsigned field = (v >> 2) & 0b1111;
printf("field = %u\n", field);
return 0;
}Hızlı Çarpma ve Toplama
Kaydırmaları birleştirerek sabitlerle hızlıca çarpma yapabilirsiniz. 10 ile çarpmak, 3 bit kaydırmaya (8 ile çarpma) ve ardından 1 bit kaydırmaya (2 ile çarpma) eşittir.
#include <stdio.h>
int main(void) {
unsigned x = 7;
unsigned times10 = (x << 3) + (x << 1);
printf("7 * 10 = %u\n", times10);
return 0;
}Hızlı Kontrol
Kaydırmalar hakkındaki bilginizi sınayın.
Özet
Kaydırma işleçlerini öğrendiniz:
<<sola kaydırır ve ikinin kuvvetleriyle çarpar.>>sağa kaydırır ve ikinin kuvvetlerine böler.(v >> i) & 1tek bir biti çıkarır.- Öngörülebilir kaydırmalar için
unsignedkullanın ve türün genişliğine eşit veya daha fazla miktarda hiçbir zaman kaydırma yapmayın.
Sıkça Sorulan Sorular
“Kaydırmalar” dersi ücretsiz mi?
Evet — “Kaydırmalar” 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.
“Kaydırmalar” dersinde ne öğreneceğim?
Sola ve sağa kaydırma 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 2. dersidir.
“Kaydırmalar” 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.