Nội dung chính
1. Toán tử mô đun
Toán tử mô đun (còn được gọi là toán tử chia lấy phần dư) là một toán tử trả về phần còn lại sau khi thực hiện phép chia số nguyên. Ví dụ, 7/4 = 1 phần dư 3. Do đó, 7% 4 = 3. Như một ví dụ khác, 25/7 = 3 phần dư 4, do đó 25% 7 = 4. Mô-đun chỉ hoạt động với các toán hạng số nguyên.
Mô đun hữu ích nhất để kiểm tra xem một số có chia hết cho một số khác hay không: nếu x% y cho kết quả là 0, thì chúng ta biết rằng x chia hết cho y.
/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/
#include <iostream>
int main()
{
std::cout << "Enter an integer: ";
int x{};
std::cin >> x;
std::cout << "Enter another integer: ";
int y{};
std::cin >> y;
std::cout << "The remainder is: " << x % y << '\n';
if ((x % y) == 0)
std::cout << x << " is evenly divisible by " << y << '\n';
else
std::cout << x << " is not evenly divisible by " << y << '\n';
return 0;
}
Dưới đây là một số hoạt động của chương trình này:
Enter an integer: 6
Enter another integer: 3
The remainder is: 0
6 is evenly divisible by 3
Enter an integer: 6
Enter another integer: 4
The remainder is: 2
6 is not evenly divisible by 4
2. Mô-đun với số âm
Toán tử mô đun cũng có thể làm việc với các toán hạng âm. x% y luôn trả về kết quả có dấu của x.
Chạy chương trình trên:
Enter an integer: -6
Enter another integer: 4
The remainder is: -2
-6 is not evenly divisible by 4
Enter an integer: 6
Enter another integer: -4
The remainder is: 2
6 is not evenly divisible by -4
Trong cả hai trường hợp, bạn có thể thấy phần còn lại có dấu của toán hạng đầu tiên.
Lưu ý: Trước C ++ 11, môđun với toán hạng âm có thể dẫn đến kết quả dương hoặc âm. Điều này đã được dự đoán trong C ++ 11.
3. Toán tử lũy thừa ở đâu?
Bạn sẽ lưu ý rằng toán tử ^ (thường được sử dụng để biểu thị lũy thừa trong toán học) là một phép toán Bitwise XOR trong C ++ (được đề cập trong bài học – Thao tác trên bit với toán tử bit và mặt nạ của bit). C ++ không bao gồm một toán tử số mũ.
Để thực hiện số mũ trong C ++, hãy #include header <cmath> và sử dụng hàm pow ():
#include <cmath>
double x{ std::pow(3.0, 4.0) }; // 3 to the 4th power
Lưu ý rằng các tham số (và giá trị trả về) của hàm pow() là kiểu double. Do lỗi làm tròn số dấu phẩy động, kết quả của pow() có thể không chính xác (ngay cả khi bạn chuyển nó là số nguyên hoặc số nguyên).
Nếu bạn muốn tính lũy thừa số nguyên, tốt nhất bạn nên sử dụng hàm của riêng mình để làm như vậy. Hàm sau thực hiện lũy thừa số nguyên (sử dụng thuật toán “lũy thừa bình phương” không trực quan để đạt hiệu quả):
#include <cstdint> // for std::int_fast64_t
// note: exp must be non-negative
std::int_fast64_t pow(int base, int exp)
{
std::int_fast64_t result{ 1 };
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
}
Đừng lo lắng nếu bạn không hiểu cách hoạt động của hàm này – bạn không cần phải hiểu nó để gọi nó.
/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/
#include <iostream>
#include <cstdint> // for std::int_fast64_t
// note: exp must be non-negative
std::int_fast64_t powint(int base, int exp)
{
std::int_fast64_t result{ 1 };
while (exp)
{
if (exp & 1)
result *= base;
exp >>= 1;
base *= base;
}
return result;
}
int main()
{
std::cout << powint(7, 12); // 7 to the 12th power
return 0;
}
Output:
13841287201
Lưu ý: Trong phần lớn các trường hợp, lũy thừa số nguyên sẽ làm tràn kiểu dữ liệu tích phân. Đây có thể là lý do tại sao một hàm như vậy không được đưa vào thư viện chuẩn ngay từ đầu.
Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.
Nguồn và Tài liệu tiếng anh tham khảo:
Tài liệu từ cafedev:
- Full series tự học C++ từ cơ bản tới nâng cao tại đây nha.
- Ebook về C++ tại đây.
- Các series tự học lập trình MIỄN PHÍ khác
- Nơi liên hệ hợp tác hoặc quảng cáo cùng Cafedevn tại đây.
Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:
Chào thân ái và quyết thắng!