bir char
8 bit, bir int
32 bitlik bir alt olup olmadığını kontrol etmek istiyorum. Ben daha verimli istiyorumC - 8 bit 32 bit olup olmadığını nasıl kontrol edelim?
for (int i = 0; i < 25; i++) {
int tmp = a;
tmp <<= 24;
tmp >>= 24;
int res = b^tmp;
res <<= 24;
res >>= 24;
if (res == 0)
return 1;
else
a >>= 1;
}
return 0;
:
a = 0110 1010 1011 0100 0000 0110 1010 0010 (32 bit int)
b = 0100 0000 (8 bit char)
is_in(a, b) --> true
İşte benim kodudur. Herhangi bir fikrin var mı?
'a' veya yalnızca bayt sınırları üzerinde' "içinde" herhangi bir yerde olabilir b' miyim? Şimdiye kadar ne denediniz? Kodunuzda hangi sorunlarla karşılaştınız? –
Anahtar Kelimeler: vardiya, maske ve karşılaştır. <<' or '>> operatörlerini ve '&' operatörünü kullanın. Bir çözüm bulup, zorluklarla karşılaştığınızda sorular sorun. –
8 bit yalnızca 32bit int'nin belirlenmiş bir konumunda olabilirse, diğerlerini AND işlemleriyle sıfırlayabilir ve değerleri doğrudan karşılaştırabilirsiniz. – Magisch