Thắc mắc về dấu <<

Em có đọc code của mấy người nước ngoài viết trên codeforces.
cho em hỏi dòng này

for(i=0;i++<n;)cin>>a[i];

em check dòng này sau khi chạy song vòng for thì giá trị i luôn hơn giá trị n 2 đơn vị. nhưng không hiểu tại sao ạ
và dòng này em không biết dấu << này là gì hết ạ

for(;y<<1<x;y<<=1)s++;

Mọi người giải thích giúp em với, em cảm ơn :smiley:

#import<bits/stdc++.h>
using namespace std;
int i,n,s,t,x,y,a[60];
main()
{
	for(cin>>t;t--;)
	{
		cin>>n;
		for(i=0;i++<n;)cin>>a[i];
		for(i=s=0;++i<n;)
		{
			x=max(a[i],a[i+1]);
			y=min(a[i],a[i+1]);
			for(;y<<1<x;y<<=1)s++;
		}
		cout<<s<<endl;
	}
}
1 Like

Từ khóa để tìm hiểu thêm: bitwise operator https://openplanning.net/12281/cac-toan-tu-bitwise

Những bài liên quan trên DạyNhauHọc: https://daynhauhoc.com/search?q=bitwise

4 Likes

1 thôi.
Khi i = n thì i++ ra n và i bằng n+1.

4 Likes

:smiley: Dạ vâng em cảm ơn ạ, mấy nay e bận quá quên rep mấy a mất :smile:

1 Like
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?