01/10/2018, 12:04
Cho em hỏi về chức năng của hàm GetBit này
Cho hỏi câu lệnh return cụ thể trong hàm này nó có chức năng gì vây ạ
bool GetBit(char x, char i)
{
return (bool)((x >> 7 - i) & 1);
}
Bài liên quan
Kiểm tra bit thứ i trong byte x là 1 hay 0.
Trả về true nếu là 1, trả về false nếu là 0.
Hàm này lấy bit thứ i, từ 0 tới 7, từ highest bit tới lowest bit của x.
Phép trừ trc, sau đó phép dịch bit, cuối là phép AND bit.
Bit cần lấy đc dịch về phải, trở thành lowest bit, AND bit với 1 để zero các bit kia đi (ngoại trừ lowest bit), thế là có bit cần lấy.
Sửa title cho bạn luôn.
Mình không hiểu kiểu return(kiểu tra về bool) () là sao nhỉ,chỉ biết return x; trả về cho hàm giá trị của x thôi.Bạn có thể giải thích rỏ cái này giúp được k ạ
Ko, nó return giá trị biểu thức mà có tham số là x và i, chứ ko phải return x. Biểu thức thì mình giải thích ở trên.
Tác giả hàm này chắc thích viết thế (là hint ám chỉ ý định chỉ có hoặc là 0 hoặc là 1), bạn đổi sang kiểu int cũng đc.
Tức là nó return bieu thuc này đúng ko ạ “((x >> 7 - i) & 1)”
Vậy (bool) trước biểu thức đó làm gì vậy ạ.
Vì kiểu trả về là
bool
.Khi đã & 1 thì chỉ có hai kết quả là 0 hay 1, nên phù hợp với
bool
.C/C++ có type casting, mấy bác vn dịch nôm na là “ép kiểu”.
Vậy mình có cần thiết phải ép kiểu về bool không vậy.Bởi vì trước sau gì thì biểu thức đó cũng trả về 0 hoặc 1 thôi mà nhỉ.
Ko cần ép kiểu, viết thế để “hint” thôi. Nếu thuật toán sai thì ép kiểu cũng ko ích gì.
Thank các bạn đả thông não mình.
Đúng vậy, chỉ nên dùng
bool
với các hàm kiểm tra thôi. Chứ những hàm Get trả về kiểu trùng với thứ mà nó get.