01/10/2018, 00:59
Hàm này làm gì ? Và bỏ đi chi tiết có sao không?
Cho em hỏi là tại sao trong vòng lặp for nó chỉ ghi biến b rồi chấm phẩy hai đầu là sao ạ. Nó có ảnh hưởng gì đến hàm và nếu bỏ nó đi thì có sao không ạ.
char f13(char a)
{
char b,s;
for(b=1,s=0;b;b<<=1)
if(a&b)
s++;
return s;
}
Bài liên quan
Bài này dùng để đếm số bit 1 của a.
a & b tức là phép bitwise and
trả về 1 khi cả 2 cùng là 1.
Ở vòng lặp trên sẽ duyệt qua 8 bit một và AND với a. với mỗi lần AND sẽ xác định được xem vị trí đó trong a có phải là bit 1 không. Nếu phải thì tăng s lên 1.
Cám ơn bạn. Nhưng cho mình hỏi thêm là sao lại có ;b; làm gì. Nó có ảnh hưởng không.
vì là left shift.
Nên tới 1 lúc nào đó b = 0
mà 0 là false -> dừng vòng lặp.