در این مطلب، ویدئو عملگرهای بیتی در پایتون – فیلدهای آموزشی و کاربردی با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:28:33
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:04,230 –> 00:00:09,280
[موسیقی]
2
00:00:09,280 –> 00:00:10,880
بچهها در
3
00:00:10,880 –> 00:00:12,080
ویدیوی امروز که میخواهیم به
4
00:00:12,080 –> 00:00:15,040
عملگرهای بیتی در پایتون بپردازیم، چه اتفاقی میافتد، خوش آمدید.
5
00:00:15,040 –> 00:00:16,560
6
00:00:16,560 –> 00:00:18,400
7
00:00:18,400 –> 00:00:20,400
در یک
8
00:00:20,400 –> 00:00:22,880
کتاب معمولاً در مورد همه
9
00:00:22,880 –> 00:00:24,880
عملگرهای دیگر صحبت می کنم، اما معمولاً از
10
00:00:24,880 –> 00:00:26,880
عملگرهای بیتی صرف نظر می کنم زیرا
11
00:00:26,880 –> 00:00:28,800
برای مبتدیان بسیار گیج کننده هستند، بنابراین اشاره کردم
12
00:00:28,800 –> 00:00:30,320
که آنها وجود دارند، اشاره کردم که
13
00:00:30,320 –> 00:00:32,558
اساساً برای چه چیزی استفاده می شوند، اما بعد از آن فقط
14
00:00:32,558 –> 00:00:34,320
آنها را نادیده می گیریم. و ما با بقیه محتوای اساسی مبتدی ادامه می دهیم
15
00:00:34,320 –> 00:00:37,200
و من فکر می کنم
16
00:00:37,200 –> 00:00:39,040
این خوب است زیرا برای
17
00:00:39,040 –> 00:00:41,520
مبتدیان عملگرهای بیتی گیج کننده
18
00:00:41,520 –> 00:00:42,960
هستند و خیلی مفید نیستند زیرا
19
00:00:42,960 –> 00:00:44,320
برای مدتی طولانی به آنها نیاز ندارند،
20
00:00:44,320 –> 00:00:45,360
21
00:00:45,360 –> 00:00:47,120
اما آنچه اغلب اتفاق می افتد این است که که
22
00:00:47,120 –> 00:00:49,039
مردم پس از آن هرگز در مورد آنها یاد نمیکنند
23
00:00:49,039 –> 00:00:51,120
حداقل زمانی که محتوای من را تماشا میکنند، زیرا
24
00:00:51,120 –> 00:00:53,760
ما از آن صرفنظر میکنیم و سپس هرگز
25
00:00:53,760 –> 00:00:55,600
به آن پی نمیبریم، شاید در پروژهای از آن استفاده میکنیم، اما
26
00:00:55,600 –> 00:00:57,280
واقعاً توضیح نمیدهیم که عملگرهای بیتی چیست
27
00:00:57,280 –> 00:00:59,280
و چرا که من
28
00:00:59,280 –> 00:01:01,120
میخواستم این ویدیو را بسازم که در آن
29
00:01:01,120 –> 00:01:03,199
عملگرهای بیتی را با جزئیات پوشش میدهیم، در
30
00:01:03,199 –> 00:01:05,199
مورد نحوه عملکرد
31
00:01:05,199 –> 00:01:07,119
آنها صحبت میکنیم و سپس در مورد
32
00:01:07,119 –> 00:01:09,280
اینکه عملگرهای بیتی کجا و چگونه
33
00:01:09,280 –> 00:01:11,360
واقعاً استفاده میشوند و من نمیخواهم صحبت کنیم. برای اینکه بگوییم
34
00:01:11,360 –> 00:01:14,000
زندگی واقعی اما در برنامه نویسی واقعی
35
00:01:14,000 –> 00:01:15,600
اکنون
36
00:01:15,600 –> 00:01:16,880
برای درک عملگرهای بیتی باید
37
00:01:16,880 –> 00:01:19,759
سیستم باینری و بیت ها را به طور کلی درک کنیم و
38
00:01:19,759 –> 00:01:20,560
من در اینجا قصد ندارم یک
39
00:01:20,560 –> 00:01:22,320
آموزش کامل در مورد سیستم باینری به شما ارائه دهم، اما
40
00:01:22,320 –> 00:01:23,520
می خواهیم ادامه دهیم. از طریق یک
41
00:01:23,520 –> 00:01:24,960
مثال سریع برای کسانی از شما که
42
00:01:24,960 –> 00:01:27,119
هنوز در مورد سیستم باینری نمیدانند، اما
43
00:01:27,119 –> 00:01:29,439
توصیه میکنم یک ویدیوی دقیق در مورد
44
00:01:29,439 –> 00:01:32,079
آن را تماشا کنید حالا فرض کنید یک عدد 28 داریم.
45
00:01:32,079 –> 00:01:34,560
این عدد یک عدد اعشاری 28 است و
46
00:01:34,560 –> 00:01:36,400
میتوان آن را در نمایش داد. سیستم دودویی
47
00:01:36,400 –> 00:01:39,040
با استفاده از صفر و یک بار چگونه این
48
00:01:39,040 –> 00:01:41,920
کار انجام می شود، اساساً به توان های 2 نگاه می
49
00:01:41,920 –> 00:01:44,640
کنیم و این سوال را می پرسیم که کدام توان
50
00:01:44,640 –> 00:01:48,320
های 2 28 از اکنون 28 تشکیل شده است در این مورد
51
00:01:48,320 –> 00:01:50,560
از کوچکترین توان بعدی 2
52
00:01:50,560 –> 00:01:52,000
که 16 است
53
00:01:52,000 –> 00:01:54,000
و بعد بعدی تشکیل شده است. کوچکترین توان دو،
54
00:01:54,000 –> 00:01:56,320
هشت است به طوری که می شود 24 و سپس
55
00:01:56,320 –> 00:01:59,759
کوچکترین بعدی چهار می شود این می شود 28
56
00:01:59,759 –> 00:02:02,079
و سپس ما نه دو و نه یک
57
00:02:02,079 –> 00:02:04,640
داریم بنابراین آنها را نادیده می گیریم و این اساساً به معنای
58
00:02:04,640 –> 00:02:08,080
یک بله برای شانزده یک بله برای هشت
59
00:02:08,080 –> 00:02:11,599
یک بله برای چهار صفر نه برای دو است و
60
00:02:11,599 –> 00:02:14,160
صفر نه برای یک، اجازه دهید مثال دیگری برای شما بیاورم
61
00:02:14,160 –> 00:02:16,000
اگر عدد 19 را داشته باشیم به
62
00:02:16,000 –> 00:02:18,560
عنوان مثال که 16 خواهد بود
63
00:02:18,560 –> 00:02:20,879
نه به اضافه 8 زیرا 16 به علاوه 8 در
64
00:02:20,879 –> 00:02:23,520
حال حاضر خیلی زیاد است، بنابراین فقط 16
65
00:02:23,520 –> 00:02:25,280
4 نیز بسیار زیاد است زیرا
66
00:02:25,280 –> 00:02:28,239
در حال حاضر 20 خواهد بود و مورد
67
00:02:28,239 –> 00:02:32,000
بعدی 2 است. بنابراین 16 به علاوه 2 می شود 18 و سپس به علاوه 1 می
68
00:02:32,000 –> 00:02:33,920
شود 19 به این معنی که این عدد
69
00:02:33,920 –> 00:02:37,200
1 می شود زیرا برای 16 بله است. صفر
70
00:02:37,200 –> 00:02:39,519
صفر زیرا نه برای هشت و نه برای
71
00:02:39,519 –> 00:02:42,239
چهار و سپس یک و یکی چون
72
00:02:42,239 –> 00:02:44,080
بله برای دو و یک
73
00:02:44,080 –> 00:02:46,000
اگر برای شما خیلی گیج کننده است
74
00:02:46,000 –> 00:02:47,760
زیرا فکر می کنید من آن را خوب توضیح ندادم
75
00:02:47,760 –> 00:02:49,840
یا چیزی شبیه به آن ویدیویی را در سیستم باینری تماشا کنید که به
76
00:02:49,840 –> 00:02:51,920
این صورت است که
77
00:02:51,920 –> 00:02:53,599
اعداد اعشاری در سیستم باینری
78
00:02:53,599 –> 00:02:57,040
ما نشان داده می شوند. دارای توان دو هستند، بنابراین
79
00:02:57,040 –> 00:02:58,959
بیت سمت راست مخفف یک است، سپس
80
00:02:58,959 –> 00:03:03,840
دو t داریم پس ما 4 8 16 32 64 128 داریم
81
00:03:03,840 –> 00:03:06,480
و به همین ترتیب به بی نهایت یا به سمت
82
00:03:06,480 –> 00:03:07,920
بی نهایت
83
00:03:07,920 –> 00:03:10,239
و به این ترتیب اعداد
84
00:03:10,239 –> 00:03:11,599
در سیستم باینری نشان داده می شوند و این چیزی است
85
00:03:11,599 –> 00:03:13,760
که ما در ویدیوی امروز
86
00:03:13,760 –> 00:03:16,640
برای توضیح عملگرهای بیتی استفاده می کنیم
87
00:03:16,640 –> 00:03:18,560
زیرا به صورت بیتی عملگرها همانطور که از نام
88
00:03:18,560 –> 00:03:20,000
قبلا پیداست
89
00:03:20,000 –> 00:03:22,159
عملگرهایی هستند که
90
00:03:22,159 –> 00:03:24,000
با تک تک بیت های
91
00:03:24,000 –> 00:03:25,760
نمایش باینری کار می کنند، بنابراین بیایید بگوییم که ما یک
92
00:03:25,760 –> 00:03:27,280
عدد یک را در اینجا داریم،
93
00:03:27,280 –> 00:03:29,040
اول از همه اجازه دهید به شما نشان دهم که چگونه می
94
00:03:29,040 –> 00:03:29,920
95
00:03:29,920 –> 00:03:31,760
توانید به نمایش دودویی
96
00:03:31,760 –> 00:03:34,000
اعداد در پایتون نگاه کنید. عدد یک
97
00:03:34,000 –> 00:03:36,480
برابر با 28 و عدد دو برابر با 19 است و
98
00:03:36,480 –> 00:03:38,799
همانطور که قبلاً داشتیم کاری که میتوانیم انجام دهیم این است که
99
00:03:38,799 –> 00:03:40,560
میتوانیم بگوییم print
100
00:03:40,560 –> 00:03:43,440
bin off n1 و میتوانیم همین کار را
101
00:03:43,440 –> 00:03:45,599
در اینجا برای n2 انجام دهیم
102
00:03:45,599 –> 00:03:48,720
و اگر این را اینجا اجرا کنم،
103
00:03:48,720 –> 00:03:50,879
اینجا را مشاهده خواهید کرد.
104
00:03:50,879 –> 00:03:53,519
نمایش دودویی ما 0 b را به عنوان پیشوند
105
00:03:53,519 –> 00:03:57,040
دریافت می کنیم و سپس 1 1 1 0 0 4
106
00:03:57,040 –> 00:04:01,120
28 و سپس 1 0 0 1 1 برای 19 می گیریم همانطور که
107
00:04:01,120 –> 00:04:03,200
اکنون دیدیم اگر بخواهم 0b را حذف کنم
108
00:04:03,200 –> 00:04:05,030
فقط می توانم بگویم
109
00:04:05,030 –> 00:04:06,159
[Music]
110
00:04:06,159 –> 00:04:08,799
از شروع موقعیت دوم
111
00:04:08,799 –> 00:04:11,360
مانند آن
112
00:04:11,760 –> 00:04:13,760
و سپس ما فقط حفاری باینری را دریافت می کنیم
113
00:04:13,760 –> 00:04:14,720
اینجاست،
114
00:04:14,720 –> 00:04:15,519
پس
115
00:04:15,519 –> 00:04:17,600
بیایید فقط چند عدد تصادفی را انتخاب
116
00:04:17,600 –> 00:04:20,720
کنیم، بیایید با Uh 23
117
00:04:20,720 –> 00:04:22,560
477
118
00:04:22,560 –> 00:04:23,680
و
119
00:04:23,680 –> 00:04:26,040
36
120
00:04:26,040 –> 00:04:29,199
213 پیش برویم، به عنوان مثال
121
00:04:29,199 –> 00:04:30,960
اگر من اکنون این اعداد را به صورت
122
00:04:30,960 –> 00:04:32,800
باینری نشان می دهم، بسیار خوب است که یکی از دیگری طولانی تر است،
123
00:04:32,800 –> 00:04:34,400
بنابراین اجازه دهید این اعداد را کمی
124
00:04:34,400 –> 00:04:37,680
کوچکتر کنیم، شاید 31 000
125
00:04:37,680 –> 00:04:39,759
دارای طول یکسانی
126
00:04:39,759 –> 00:04:41,280
هستند که اکنون دو
127
00:04:41,280 –> 00:04:44,160
نمایش دودویی این اعداد هستند
128
00:04:44,160 –> 00:04:45,600
و کاری که ما می خواهیم با آنها انجام دهیم این است
129
00:04:45,600 –> 00:04:47,440
که عملگرهای بیتی و عملگرهای بیتی را اعمال می
130
00:04:47,440 –> 00:04:49,440
کنیم، این اساساً
131
00:04:49,440 –> 00:04:51,680
به این معنی است که ما توابع منطقی
132
00:04:51,680 –> 00:04:53,120
را که امیدواریم قبلاً می دانیم اعمال کنیم.
133
00:04:53,120 –> 00:04:56,400
در این مرحله که و یا
134
00:04:56,400 –> 00:04:58,080
xor و غیره هستند
135
00:04:58,080 –> 00:05:00,240
برای تک تک بیت ها، بنابراین
136
00:05:00,240 –> 00:05:03,600
چیزی شبیه درست و درست یا درست و
137
00:05:03,600 –> 00:05:06,160
نادرست نداریم، بولی نداریم،
138
00:05:06,160 –> 00:05:09,039
این عملگرها مانند و یا xor و غیره
139
00:05:09,039 –> 00:05:11,680
را روی فرد اعمال می کنیم. بیت ها و
140
00:05:11,680 –> 00:05:14,560
سپس یک عدد جدید، یک عدد باینری جدید
141
00:05:14,560 –> 00:05:17,520
در نتیجه می گیریم، بنابراین اگر یک و یک داشته باشیم،
142
00:05:17,520 –> 00:05:20,160
یک صفر و صفر
143
00:05:20,160 –> 00:05:23,520
به دست می آید، این نتیجه به صفر یک و یک یک
144
00:05:23,520 –> 00:05:25,759
صفر و یک صفر می شود،
145
00:05:25,759 –> 00:05:28,320
بنابراین این همان چیزی است که به صورت بیتی operato است. rs
146
00:05:28,320 –> 00:05:30,000
اساساً برای این است که ما با
147
00:05:30,000 –> 00:05:31,840
یک پایه شروع می کنیم
148
00:05:31,840 –> 00:05:33,840
و برای این فقط می گوییم عدد
149
00:05:33,840 –> 00:05:35,840
سه
150
00:05:35,840 –> 00:05:37,120
n1
151
00:05:37,120 –> 00:05:40,880
و n2 خواهد بود،
152
00:05:40,880 –> 00:05:43,919
اکنون اگر در حال کدنویسی در جاوا یا c یا هستید از یک واحد و نماد استفاده می کنیم. c
153
00:05:43,919 –> 00:05:46,000
plus یا c شارپ می دانید که اگر می
154
00:05:46,000 –> 00:05:48,160
خواهید از معادل پایتون استفاده کنید
155
00:05:48,160 –> 00:05:50,479
و کدام یک
156
00:05:50,479 –> 00:05:52,320
عملگر منطقی است وقتی چیزی شبیه
157
00:05:52,320 –> 00:05:55,520
درست و نادرست داریم، برای مثال،
158
00:05:55,520 –> 00:05:57,680
اگر این کار را در
159
00:05:57,680 –> 00:05:59,360
زبان های دیگر انجام دهید، یک عملگر منطقی است. آیا شما از
160
00:05:59,360 –> 00:06:00,400
دو
161
00:06:00,400 –> 00:06:02,319
و نمادها در اینجا برای
162
00:06:02,319 –> 00:06:06,240
عملگر منطقی استفاده می کنید، ما در اینجا از یک علامت و نماد استفاده می کنیم،
163
00:06:06,240 –> 00:06:08,880
بنابراین این یعنی بیت های شماره
164
00:06:08,880 –> 00:06:11,039
یک را بردارید و بیت های شماره دو را بردارید و
165
00:06:11,039 –> 00:06:14,319
نتیجه تابع پایان را به من بدهید تا بتوانم ادامه دهم
166
00:06:14,319 –> 00:06:16,639
و بگویم باینری
167
00:06:16,639 –> 00:06:18,840
شماره سه را چاپ کنید
168
00:06:18,840 –> 00:06:21,120
و در آنجا
169
00:06:21,120 –> 00:06:22,800
می توانید ببینید که این
170
00:06:22,800 –> 00:06:25,280
نتیجه اعمال است و برای تک تک بیت های
171
00:06:25,280 –> 00:06:28,160
یک و یک یک صفر صفر صفر یک
172
00:06:28,160 –> 00:06:30,240
یک یک صفر و یک
173
00:06:30,240 –> 00:06:33,680
صفر یک صفر صفر یک یک برای کسانی
174
00:06:33,680 –> 00:06:34,720
از شما که نمی دانم تابع پایان
175
00:06:34,720 –> 00:06:36,639
اساساً تابع و چیست
176
00:06:36,639 –> 00:06:40,240
اگر هر دو ورودی یکی باشند یا اگر
177
00:06:40,240 –> 00:06:42,400
چندین ورودی وجود داشته باشد، اگر همه ورودی
178
00:06:42,400 –> 00:06:45,840
ها یک باشند، تنها یک است، بنابراین اساساً یک و یک برابر با
179
00:06:45,840 –> 00:06:48,880
یک است، هر چیز دیگری برابر با صفر است،
180
00:06:48,880 –> 00:06:50,560
این ایده اصلی یک است و دوباره
181
00:06:50,560 –> 00:06:52,319
در پایان در مورد تابع صحبت خواهیم کرد.
182
00:06:52,319 –> 00:06:54,720
مواردی را استفاده کنید که نیاز داریم که وقتی
183
00:06:54,720 –> 00:06:56,319
اینقدر مهم است، ما در حال حاضر در
184
00:06:56,319 –> 00:06:57,759
مورد آن صحبت
185
00:06:57,759 –> 00:07:00,479
186
00:07:00,479 –> 00:07:03,199
خواهیم کرد، اگر بخواهیم استفاده کنیم یا اساساً
187
00:07:03,199 –> 00:07:06,479
بگوییم که صفر و صفر صفر است، همه چیزهای
188
00:07:06,479 –> 00:07:09,360
دیگر را فقط در مورد عملکرد اصلی صحبت خواهیم کرد. یکی است، بنابراین اگر حداقل یک چیز یکی باشد،
189
00:07:09,360 –> 00:07:11,440
همه چیز یکی است یا
190
00:07:11,440 –> 00:07:13,840
نتیجه نهایی یکی است که اساساً به این معنی است که
191
00:07:13,840 –> 00:07:15,280
n1
192
00:07:15,280 –> 00:07:16,880
اگر چاپ
193
00:07:16,880 –> 00:07:21,360
کنم، فرض کنید n4 خواهد بود n1 یا n2
194
00:07:21,360 –> 00:07:23,120
این نماد لوله است در اینجا
195
00:07:23,120 –> 00:07:26,560
این منطقی است اوه بیتی یا
196
00:07:26,560 –> 00:07:29,599
بنابراین کاری که اکنون انجام میدهیم این است که میگوییم print bin
197
00:07:29,599 –> 00:07:32,240
198
00:07:32,240 –> 00:07:34,240
n4 آنچه در نتیجه به دست میآید این است که
199
00:07:34,240 –> 00:07:35,919
اجازه دهید من فقط نظر بدهم تا
200
00:07:35,919 –> 00:07:37,919
مزاحم ما نشود،
201
00:07:37,919 –> 00:07:40,400
میتوانیم ببینیم که در هر جایی که من
202
00:07:40,400 –> 00:07:41,599
حداقل
203
00:07:41,599 –> 00:07:44,560
یکی داشته باشم، یک آن را دریافت میکنم. در نتیجه یک، بنابراین در اینجا
204
00:07:44,560 –> 00:07:46,319
من صفر صفر دارم، به همین دلیل است که در نهایت به این نتیجه می
205
00:07:46,319 –> 00:07:48,560
رسم صفر اما در هر جای دیگری در اینجا
206
00:07:48,560 –> 00:07:51,120
من یک یا دو تا یا
207
00:07:51,120 –> 00:07:53,039
حداقل یکی یک
208
00:07:53,039 –> 00:07:55,440
ام دارم و در نتیجه یک را در اینجا می
209
00:07:55,440 –> 00:07:56,960
بینیم که دوباره دو صفر داریم به همین دلیل است
210
00:07:56,960 –> 00:07:59,680
که صفر می گیریم و این تابع یا
211
00:07:59,680 –> 00:08:01,759
تابع است دوباره تابع یا همیشه
212
00:08:01,759 –> 00:08:05,039
یک را برمی گرداند اگر حداقل یک عنصر uh
213
00:08:05,039 –> 00:08:07,599
اگر حداقل یک بیت روی یک تنظیم شده باشد،
214
00:08:07,599 –> 00:08:10,639
نتیجه نهایی هم یکی می شود،
215
00:08:10,639 –> 00:08:14,560
پس ما x4 داریم که انحصاری است
216
00:08:14,560 –> 00:08:17,120
یا نام قبلاً می گوید که این دقیقاً چه می کند xor
217
00:08:17,120 –> 00:08:19,520
اساساً می گوید من می خواهم یک و
218
00:08:19,520 –> 00:08:22,160
صفر یا صفر و یک داشته باشند اما من نمی
219
00:08:22,160 –> 00:08:24,720
خواهم دو صفر یا دو یک داشته باشم
220
00:08:24,720 –> 00:08:27,759
باید متفاوت باشد باید یکی باشد یا
221
00:08:27,759 –> 00:08:30,639
یا فقط یا و xor یکی است یا بنابراین من
222
00:08:30,639 –> 00:08:32,479
نمی توانم هر دو را داشته باشم. یکی از
223
00:08:32,479 –> 00:08:34,719
آنها باشید بنابراین یک
224
00:08:34,719 –> 00:08:37,839
x یا در واقع این است یا این درست نیست،
225
00:08:37,839 –> 00:08:38,719
226
00:08:38,719 –> 00:08:40,958
یک x یا صفر
227
00:08:40,958 –> 00:08:43,760
برابر است با یک و صفر x یا
228
00:08:43,760 –> 00:08:46,399
یک نیز یکی است، هر چیز دیگری منجر
229
00:08:46,399 –> 00:08:49,440
به صفر می شود که اساساً به این معنی است که اگر
230
00:08:49,440 –> 00:08:51,440
این دو مقدار متفاوت باشند ما می رویم
231
00:08:51,440 –> 00:08:53,279
برای به دست آوردن یک،
232
00:08:53,279 –> 00:08:56,640
بنابراین اگر من بگویم n5 قرار است
233
00:08:56,640 –> 00:08:58,880
n1 شود و سپس از این نماد قدرت
234
00:08:58,880 –> 00:09:02,959
در اینجا استفاده کنیم نماد کلاه uh n1 و
235
00:09:02,959 –> 00:09:04,080
n2 است
236
00:09:04,080 –> 00:09:06,720
این به معنای n به توان n2 نیست
237
00:09:06,720 –> 00:09:09,600
که ستاره ستاره خواهد بود در این مورد به
238
00:09:09,600 –> 00:09:12,560
این معنی است که xor بنابراین n1x یا
239
00:09:12,560 –> 00:09:14,480
n2 n5 خواهد بود و ما میخواهیم
240
00:09:14,480 –> 00:09:16,160
بگوییم print
241
00:09:16,160 –> 00:09:16,959
bin
242
00:09:16,959 –> 00:09:19,839
n4
243
00:09:21,200 –> 00:09:22,880
244
00:09:22,880 –> 00:09:24,720
پس
245
00:09:24,720 –> 00:09:28,399
این یا در واقع n5 است متاسفم
246
00:09:28,399 –> 00:09:30,320
وقتی این را اجرا می کنیم اجازه دهید فقط نظر بدهم
247
00:09:30,320 –> 00:09:31,180
که دوباره
248
00:09:31,180 –> 00:09:33,200
[Music]
249
00:09:33,200 –> 00:09:35,920
اینجا می توانید ببینید که یک
250
00:09:35,920 –> 00:09:37,760
صفر ابتدایی دارد که نمایش داده نمی شود زیرا یک
251
00:09:37,760 –> 00:09:39,920
و یک صفر است و اگر عدد
252
00:09:39,920 –> 00:09:42,320
با صفر شروع شود دیگر نمی شود. برای نمایش آن
253
00:09:42,320 –> 00:09:44,480
و به همین دلیل ما به طور
254
00:09:44,480 –> 00:09:46,640
مصنوعی یک صفر اضافه می کنیم فقط تا
255
00:09:46,640 –> 00:09:50,440
دوباره همان طول داشته باشیم
256
00:09:50,480 –> 00:09:53,360
اوه آنها می روند پس یک و یک همان است پس
257
00:09:53,360 –> 00:09:56,080
صفر صفر و صفر همان صفر یک
258
00:09:56,080 –> 00:09:58,640
یک همان صفر صفر و یک است متفاوت است
259
00:09:58,640 –> 00:10:01,279
بنابراین یک و یک و صفر متفاوت است بنابراین
260
00:10:01,279 –> 00:10:03,760
یک یک و یک همان صفر است و به همین ترتیب
261
00:10:03,760 –> 00:10:06,399
شما ایده یک xor اصلی را دریافت می کنید
262
00:10:06,399 –> 00:10:09,200
سپس ما نیز یک عملگر بیتی نه یا یک
263
00:10:09,200 –> 00:10:11,680
عملگر نفی داریم که مشکل این
264
00:10:11,680 –> 00:10:14,240
یکی این است که اینطور نیست. در واقع چیزی است که شما
265
00:10:14,240 –> 00:10:16,880
به عنوان یک گره بیتی فکر می کنید
266
00:10:16,880 –> 00:10:18,800
که همه بیت ها را در اطراف خود می چرخاند
267
00:10:18,800 –> 00:10:20,399
اینطور کار نمی کند، زیرا
268
00:10:20,399 –> 00:10:22,399
ما با اعداد صحیح بدون علامت کار می کنیم، به این
269
00:10:22,399 –> 00:10:24,640
معنی که اگر یک عدد صحیح
270
00:10:24,640 –> 00:10:26,000
داشته باشید و نفی آن
271
00:10:26,000 –> 00:10:27,760
را بگیرید، اگر در وهله اول بدیهی است مثبت باشد، یک عدد صحیح منفی دریافت خواهید کرد
272
00:10:27,760 –> 00:10:29,200
273
00:10:29,200 –> 00:10:30,959
274
00:10:30,959 –> 00:10:33,120
. دقیقاً فقط
275
00:10:33,120 –> 00:10:35,279
بیتها را در اینجا ورق نمیزنیم و به همین دلیل،
276
00:10:35,279 –> 00:10:37,760
این اپراتور لزوماً
277
00:10:37,760 –> 00:10:39,760
چیزی نیست که ما از آن استفاده میکنیم یا
278
00:10:39,760 –> 00:10:41,519
اگر میخواهیم واقعاً
279
00:10:41,519 –> 00:10:43,920
یک ماسک را رد کنیم، این عملگر لزوماً چیزی نیست که میخواهیم استفاده کنیم زیرا میخواهم اینجا به شما نشان
280
00:10:43,920 –> 00:10:46,000
دهم اجازه دهید من فقط این را کامنت کنید و
281
00:10:46,000 –> 00:10:48,160
اجازه دهید من این را نظر بدهم
282
00:10:48,160 –> 00:10:50,079
اگر
283
00:10:50,079 –> 00:10:52,640
uh n1 را بگیرم و آن را با این نماد موج نفی کنم
284
00:10:52,640 –> 00:10:55,120
در اینجا این مقدار بیتی نیست یا
285
00:10:55,120 –> 00:10:57,920
حداقل عملگر نفی در اینجا است و
286
00:10:57,920 –> 00:11:01,360
من این را به صورت باینری نشان می دهم، شما
287
00:11:01,360 –> 00:11:02,880
خواهید دید
288
00:11:02,880 –> 00:11:04,480
که
289
00:11:04,480 –> 00:11:06,399
این اول از همه این یک عدد منفی است
290
00:11:06,399 –> 00:11:07,279
و
291
00:11:07,279 –> 00:11:09,920
دوم اینکه اگر من اکنون سه کاراکتر اول را حذف کنم،
292
00:11:09,920 –> 00:11:12,480
293
00:11:12,480 –> 00:11:14,320
زیرا یک نماد منفی وجود دارد که می توانید ببینید
294
00:11:14,320 –> 00:11:16,720
که در واقع
295
00:11:16,720 –> 00:11:18,800
نفی بیت بیت هایی نیست که می توانید اینجا ببینید، بلکه
296
00:11:18,800 –> 00:11:20,880
اینجاست. اما در اینجا ما h
297
00:11:20,880 –> 00:11:23,680
منظورم این است که برای هر دو
298
00:11:23,680 –> 00:11:26,240
عدد یکسان است، حتی اگر آن را نفی کردم، بنابراین
299
00:11:26,240 –> 00:11:30,160
این گره در واقع یک گره بیتی نیست، این در
300
00:11:30,160 –> 00:11:32,079
واقع
301
00:11:32,079 –> 00:11:33,760
تک تک بیت ها را معکوس نمی کند
302
00:11:33,760 –> 00:11:35,360
و به همین دلیل ما خودمان می توانیم این کار را انجام
303
00:11:35,360 –> 00:11:38,399
دهیم، بنابراین اگر بدانم برای مثال
304
00:11:38,399 –> 00:11:41,279
عدد من 16 بیت یا
305
00:11:41,279 –> 00:11:43,680
هر مقدار بیت خواهد داشت که می توانم جلوتر بروم
306
00:11:43,680 –> 00:11:46,640
و بگویم 0 b که فقط نشان
307
00:11:46,640 –> 00:11:48,320
دهنده این است که اکنون یک
308
00:11:48,320 –> 00:11:52,959
عدد باینری در پایتون می نویسم و سپس 1 2 3 4 5 6 7 8 9
309
00:11:52,959 –> 00:11:59,839
10 11 12 13 14 15 16 16 یک بار
310
00:11:59,839 –> 00:12:01,200
منهای
311
00:12:01,200 –> 00:12:03,920
اوه و سپس هر عددی که اکنون داریم
312
00:12:03,920 –> 00:12:06,320
اول از همه نمی دانم n1 چند بیت
313
00:12:06,320 –> 00:12:08,959
دارد بنابراین باید
314
00:12:08,959 –> 00:12:10,800
قبل از انجام کاری ابتدا آن را بفهمیم، بیایید
315
00:12:10,800 –> 00:12:12,959
دوباره این را اجرا کنیم
316
00:12:12,959 –> 00:12:20,399
اوه 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15.
317
00:12:20,399 –> 00:12:22,720
بنابراین بسیار خوب، باید یک
318
00:12:22,720 –> 00:12:26,079
بیت را در اینجا حذف کنیم و سپس می توانیم بگوییم
319
00:12:26,079 –> 00:12:28,160
منهای n1،
320
00:12:28,160 –> 00:12:32,720
بیایید نتیجه باینری آن را چاپ کنیم
321
00:12:32,880 –> 00:12:37,279
و
322
00:12:37,440 –> 00:12:39,760
با این کار دو رقم اول را حذف کنیم و البته ما
323
00:12:39,760 –> 00:12:43,360
در اینجا باید یک صفر اول داشته باشیم
324
00:12:44,560 –> 00:12:46,079
با انجام این کار
325
00:12:46,079 –> 00:12:49,200
ما دقیقاً نفی uh را که یک صفر صفر یک را گرفتیم بدست می آوریم
326
00:12:49,200 –> 00:12:52,639
e صفر صفر یک یک 1 0 0 1 و به همین
327
00:12:52,639 –> 00:12:55,040
ترتیب این یک نفی واقعی است در حال حاضر
328
00:12:55,040 –> 00:12:57,440
راه های دیگری نیز برای انجام این کار وجود دارد،
329
00:12:57,440 –> 00:13:00,320
اما عملگر موج معمولی که
330
00:13:00,320 –> 00:13:02,480
عملگر نفی در پایتون به صورت بیت عاقلانه
331
00:13:02,480 –> 00:13:04,000
است، هرچند که واقعاً کمی
332
00:13:04,000 –> 00:13:05,279
عاقلانه نیست.
333
00:13:05,279 –> 00:13:06,959
not اینطوری کار نمی کند چون
334
00:13:06,959 –> 00:13:09,200
روی اعداد صحیح امضا شده کار می کند به مثبت
335
00:13:09,200 –> 00:13:10,480
و منفی می رود
336
00:13:10,480 –> 00:13:12,639
و اینطوری کار نمی کند،
337
00:13:12,639 –> 00:13:15,839
پس ما نیز شیفت داریم اکنون تغییر
338
00:13:15,839 –> 00:13:19,680
um مانند نیست و یا xor یا نه ما
339
00:13:19,680 –> 00:13:21,279
اعمال نمی کنیم به تک تک بیت ها،
340
00:13:21,279 –> 00:13:23,279
ما فقط
341
00:13:23,279 –> 00:13:25,200
تعداد کل بیت ها را به چپ
342
00:13:25,200 –> 00:13:27,440
یا راست منتقل می کنیم که اساساً در
343
00:13:27,440 –> 00:13:28,959
سیستم اعشاری
344
00:13:28,959 –> 00:13:30,000
um
345
00:13:30,000 –> 00:13:32,480
برابر است که همان چیزی است که تقسیم بر 2
346
00:13:32,480 –> 00:13:36,079
و ضرب در 2 است. بنابراین اگر من
347
00:13:36,079 –> 00:13:38,720
شیفت داشته باشم. در اینجا و اگر من یک عدد
348
00:13:38,720 –> 00:13:40,959
دارم، فرض کنید که شماره
349
00:13:40,959 –> 00:13:42,639
من اوه، نمی دانم
350
00:13:42,639 –> 00:13:44,639
20 است، به عنوان مثال
351
00:13:44,639 –> 00:13:47,360
اگر اکنون بگویم یک بار عدد را به سمت چپ تغییر دهید،
352
00:13:47,360 –> 00:13:49,440
353
00:13:49,440 –> 00:13:52,560
بنابراین اگر بگویم shift برابر با
354
00:13:52,560 –> 00:13:56,480
1 است و سپس عدد را چاپ کنم، این عدد
355
00:13:56,480 –> 00:13:58,720
می شود. 40. و من می خواهم به شما توضیح دهم
356
00:13:58,720 –> 00:14:01,120
که چرا این اتفاق می افتد اگر شما نمی دانید اما
357
00:14:01,120 –> 00:14:02,639
چون اساساً به این معنی است که ما
358
00:14:02,639 –> 00:14:04,399
همه بیتهای عدد را جابهجا میکنیم، اجازه دهید
359
00:14:04,399 –> 00:14:05,920
نمایش آن را در اینجا به شما نشان دهم، بنابراین
360
00:14:05,920 –> 00:14:07,760
بیایید آن را کپی
361
00:14:07,760 –> 00:14:11,519
کنیم و این را به باینری
362
00:14:11,519 –> 00:14:14,959
تغییر دهیم و اجازه دهید این را به باینری تغییر دهیم، همچنین
363
00:14:14,959 –> 00:14:16,800
خواهید دید که اینجا چه اتفاقی میافتد
364
00:14:16,800 –> 00:14:18,000
.
365
00:14:18,000 –> 00:14:20,399
ما در واقع بیت های باینری را جابجا می کنیم،
366
00:14:20,399 –> 00:14:23,040
بنابراین به جای اینکه 1 0
367
00:14:23,040 –> 00:14:25,360
1 0 0 داشته باشیم که 20 است
368
00:14:25,36