Giriş olarak bir int almak ve kth biti vermek istiyorum.Java'da bir tamsayı bit-bit'i nasıl okunur?
int getBit(int n, int k){
return kth bit in n;
}
Bunu nasıl yaparım? İşte
Giriş olarak bir int almak ve kth biti vermek istiyorum.Java'da bir tamsayı bit-bit'i nasıl okunur?
int getBit(int n, int k){
return kth bit in n;
}
Bunu nasıl yaparım? İşte
kullanma bitsel operatörleri: (bit olarak)
int getBit(int n, int k) {
return (n >> k) & 1;
}
Açıklama:
n
100010101011101010 (example)
n >> 5
000001000101010111 (all bits are moved over 5 spots, therefore
& the bit you want is at the end)
000000000000000001 (0 means it will always be 0,
= 1 means that it will keep the old value)
1
return (n >> k) & 1;
, n >> k
az önemli pozisyona k
-inci bit kaydırır ve & 1
maskeleri dışarı her şey.
en düşük anlamlı bit bit sayısı 0
ise:
return (n>>k)&1;
Ayrıca modülünü kullanabilirsiniz bunun için özellik. Numaranız en düşük anlamlı bit bile sıfır ise, aksi halde (tek) birdir.
return (n>>k)%2;
veya kullanım:
boolean getBit(int n, int k) {
return (((n >> k) & 1) == 1 ? true:false);
}
Buranın doğru 0 bit olarak en az önemli bit başlayarak bir boole değeri
isterseniz? – user1921187
@ user1921187 Evet, öyle. 'getBit (0b10001, 0)' '1' döndürür ve' getBit (0b10001, 1) '' 0' döndürür. – Doorknob
iyi, eğer getBit (n, 0) çalıştırsaydım, sağdan ikinci biti alırdım. Yani k = 0 aslında en az anlamlı bit alır, bu yüzden 0 bit. Yanlış bir şey mi görüyorum? – user1921187