در این مطلب، ویدئو بیت های معکوس – باینری – Leetcode 190 – Python با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:10:56
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,000 –> 00:00:01,920
سلام به همه خوش آمدید و بیایید امروز
2
00:00:01,920 –> 00:00:04,000
چند کد دقیق تر بنویسیم، بنابراین امروز
3
00:00:04,000 –> 00:00:05,200
بیایید مشکل را
4
00:00:05,200 –> 00:00:07,600
با بیت های معکوس حل کنیم و این
5
00:00:07,600 –> 00:00:10,320
مشکل دیگری از لیست 75 کور
6
00:00:10,320 –> 00:00:10,639
یا
7
00:00:10,639 –> 00:00:12,400
لیست مشکلات رایج کد نشت است که
8
00:00:12,400 –> 00:00:14,000
ما در این صفحه گسترده ردیابی
9
00:00:14,000 –> 00:00:15,759
کرده ایم. یک راه حل برای اکثریت قریب به اتفاق
10
00:00:15,759 –> 00:00:17,600
آنها و من چند
11
00:00:17,600 –> 00:00:19,279
سوال باینری
12
00:00:19,279 –> 00:00:21,119
دیگر را انجام خواهم داد، سوالی که امروز انجام می دهیم این یک
13
00:00:21,119 –> 00:00:23,359
بیت معکوس است، بنابراین این مشکل خوبی است
14
00:00:23,359 –> 00:00:25,359
که به نوعی مرور کنید و یاد بگیرید
15
00:00:25,359 –> 00:00:27,279
یا خود را تازه کنید. در
16
00:00:27,279 –> 00:00:29,119
عملیات دستکاری بیت،
17
00:00:29,119 –> 00:00:32,719
بنابراین یک عدد صحیح بدون علامت 32 بیتی به ما داده می شود
18
00:00:32,719 –> 00:00:35,040
و اساساً می خواهیم
19
00:00:35,040 –> 00:00:35,760
همه بیت
20
00:00:35,760 –> 00:00:38,320
های این عدد صحیح را معکوس کنیم، بنابراین مانند این مثال،
21
00:00:38,320 –> 00:00:40,480
این عدد صحیح به صورت
22
00:00:40,480 –> 00:00:42,239
باینری است، البته ممکن است به ما عدد صحیح داده نشود.
23
00:00:42,239 –> 00:00:44,480
در باینری شما می دانید که
24
00:00:44,480 –> 00:00:45,680
ممکن است به ما عدد صحیح
25
00:00:45,680 –> 00:00:48,719
4 داده شود که در باینری می دانیم که به
26
00:00:48,719 –> 00:00:51,440
این شکل است و سپس می خواهیم
27
00:00:51,440 –> 00:00:52,800
همه بیت های آن را معکوس کنیم، بنابراین
28
00:00:52,800 –> 00:00:56,079
اساساً ما می دانید که
29
00:00:56,079 –> 00:00:58,480
معکوس شدن چیزی شبیه به این خواهد بود.
30
00:00:58,480 –> 00:00:59,920
درست است و سپس می خواهیم آن عدد صحیح معکوس را برگردانیم، البته یک مقدار را برمی
31
00:00:59,920 –> 00:01:01,359
گردانیم،
32
00:01:01,359 –> 00:01:04,000
33
00:01:04,000 –> 00:01:06,000
بنابراین بیایید بگوییم که این عدد صحیح 32 بیتی است
34
00:01:06,000 –> 00:01:07,520
و بیایید بگوییم که فقط چهار است، فقط
35
00:01:07,520 –> 00:01:09,920
به این دلیل که نمی خواهیم یک عدد صحیح باینری فوق العاده طولانی انجام دهیم.
36
00:01:09,920 –> 00:01:11,360
مانند
37
00:01:11,360 –> 00:01:13,280
این روشهای زیادی برای درست انجام دادن این
38
00:01:13,280 –> 00:01:14,479
مشکل وجود دارد،
39
00:01:14,479 –> 00:01:16,960
فرض کنید یک متغیر خروجی را
40
00:01:16,960 –> 00:01:19,200
برای نتیجه اعلام میکنیم و اینجاست
41
00:01:19,200 –> 00:01:22,960
که آخرین بیت را سی و یکمین بیت
42
00:01:22,960 –> 00:01:24,320
قرار میدهیم و سپس اینجاست که بیت صفر را
43
00:01:24,320 –> 00:01:26,240
درست قرار میدهیم تا 32 بیت داشته باشیم.
44
00:01:26,240 –> 00:01:28,400
در خروجی ابتدا فقط
45
00:01:28,400 –> 00:01:29,920
همه اینها را روی
46
00:01:29,920 –> 00:01:33,759
صفر قرار می دهیم، بنابراین می خواهیم ذره ذره
47
00:01:33,759 –> 00:01:36,560
در ورودی سمت راست برویم، از همان هایی شروع
48
00:01:36,560 –> 00:01:37,600
می کنیم
49
00:01:37,600 –> 00:01:39,759
که می خواهیم آنچه را که در اینجا وجود دارد به دست آوریم
50
00:01:39,759 –> 00:01:40,799
اگر صفر باشد
51
00:01:40,799 –> 00:01:42,399
یا اگر باشد. یک و سپس میخواهیم
52
00:01:42,399 –> 00:01:44,079
آن را بگیریم و سپس آن را اینجا بگذاریم، در
53
00:01:44,079 –> 00:01:45,360
این مورد صفر است، بنابراین ما
54
00:01:45,360 –> 00:01:47,439
فقط میخواهیم یک صفر را در اینجا قرار
55
00:01:47,439 –> 00:01:48,799
دهیم، اساساً ما به سمت راست بر میگردیم
56
00:01:48,799 –> 00:01:51,360
، بیت را از اینجا میگیریم و آن را قرار میدهیم. در
57
00:01:51,360 –> 00:01:54,079
این نقطه درست به ترتیب معکوس
58
00:01:54,079 –> 00:01:54,880
تقریباً
59
00:01:54,880 –> 00:01:57,680
مانند معکوس کردن یک رشته ne xt
60
00:01:57,680 –> 00:01:59,119
ما به این یکی می رویم
61
00:01:59,119 –> 00:02:01,119
و آن را در نقطه بعدی قرار می دهیم تا
62
00:02:01,119 –> 00:02:02,479
یک صفر دیگر در اینجا داشته باشیم
63
00:02:02,479 –> 00:02:04,880
و سپس نگاهی به این یکی می اندازیم
64
00:02:04,880 –> 00:02:06,479
و آن را در نقطه بعدی
65
00:02:06,479 –> 00:02:08,080
قرار می دهیم تا یک اینجا و سپس یک داشته باشیم. از آنجایی
66
00:02:08,080 –> 00:02:10,399
که باقیمانده همه اینها صفر هستند،
67
00:02:10,399 –> 00:02:11,920
پس ما فقط صفر
68
00:02:11,920 –> 00:02:12,720
69
00:02:12,720 –> 00:02:15,760
صفر صفر خواهیم داشت، بنابراین
70
00:02:15,760 –> 00:02:16,480
واضح است که
71
00:02:16,480 –> 00:02:18,319
قبل از اینکه به ما نشان دادم فقط
72
00:02:18,319 –> 00:02:20,319
این چهار را معکوس می کنیم، در نهایت خروجی
73
00:02:20,319 –> 00:02:20,640
74
00:02:20,640 –> 00:02:22,319
یک دریافت می کنیم، اما می توانید ببینید چه زمانی ما در واقع این کار
75
00:02:22,319 –> 00:02:23,680
را با 32 بیت انجام می دهیم
76
00:02:23,680 –> 00:02:25,599
، نتیجه به درستی تغییر می کند، بنابراین آنها به
77
00:02:25,599 –> 00:02:27,360
طور خاص به ما می گویند که این فقط یک
78
00:02:27,360 –> 00:02:28,959
عدد صحیح 32 بیتی است،
79
00:02:28,959 –> 00:02:30,800
بنابراین این یک عدد صحیح بسیار بزرگ خواهد بود
80
00:02:30,800 –> 00:02:32,800
و ما این چیزی است
81
00:02:32,800 –> 00:02:34,480
که در نهایت به آن برمی گردیم. درست است،
82
00:02:34,480 –> 00:02:36,160
بنابراین بسیار ساده است که
83
00:02:36,160 –> 00:02:37,680
بفهمیم ما دقیقاً چه کاری انجام می دهیم
84
00:02:37,680 –> 00:02:39,280
حداقل با راه حلی که اکنون به شما نشان
85
00:02:39,280 –> 00:02:39,920
می
86
00:02:39,920 –> 00:02:41,599
دهم، سؤال این است که چگونه می
87
00:02:41,599 –> 00:02:44,000
توانیم این عملیات را انجام دهیم، به عنوان مثال
88
00:02:44,000 –> 00:02:46,959
چگونه می توانیم ذره ذره برویم و اولین بیت را
89
00:02:46,959 –> 00:02:47,519
90
00:02:47,519 –> 00:02:49,440
دریافت کنیم. بیت بعدی بیت بعدی
91
00:02:49,440 –> 00:02:51,120
را تا انتها به پایان
92
00:02:51,120 –> 00:02:52,319
برسانیم چگونه می توانیم برو
93
00:02:52,319 –> 00:02:55,760
و هر بیت را به خوبی در یک راه در باینری دریافت کنیم
94
00:02:55,760 –> 00:02:59,120
این است که فقط این بیت را درست
95
00:02:59,120 –> 00:03:02,159
بگیریم و آن را با منطق یک و
96
00:03:02,159 –> 00:03:05,200
عملیات درست و آنچه ما می
97
00:03:05,200 –> 00:03:06,159
گوییم این است
98
00:03:06,159 –> 00:03:09,840
که اگر این یک درست صفر است اگر
99
00:03:09,840 –> 00:03:13,200
صفر و آن را با یک بگیریم
100
00:03:13,200 –> 00:03:15,599
خروجی آن صفر خواهد بود
101
00:03:15,599 –> 00:03:17,360
درست که منطقی است زیرا
102
00:03:17,360 –> 00:03:18,959
میخواهیم بدانیم که آیا این صفر است
103
00:03:18,959 –> 00:03:21,519
یا یک، بنابراین اگر آن را با یک پایان
104
00:03:21,519 –> 00:03:22,480
دهیم،
105
00:03:22,480 –> 00:03:24,239
اگر این مقدار صفر باشد، به صفر میرسیم.
106
00:03:24,239 –> 00:03:26,319
میخواهیم اگر این
107
00:03:26,319 –> 00:03:29,519
مقدار یک باشد و آن را با یک خاتمه
108
00:03:29,519 –> 00:03:30,400
دهیم،
109
00:03:30,400 –> 00:03:32,640
یک عدد درست میگیریم که خوب است، زیرا اگر
110
00:03:32,640 –> 00:03:34,720
این یک باشد، میخواهیم یک
111
00:03:34,720 –> 00:03:36,480
در خروجی بگیریم، بنابراین این عملیاتی است
112
00:03:36,480 –> 00:03:37,120
که میخواهیم انجام دهیم.
113
00:03:37,120 –> 00:03:40,159
منطق و فهمیدن اینکه الان چه چیزی است
114
00:03:40,159 –> 00:03:42,799
، آسان است، در این مورد ما
115
00:03:42,799 –> 00:03:43,760
فقط به
116
00:03:43,760 –> 00:03:46,080
آنهایی که در اینجا هستند نگاه می کنیم، اما اگر بخواهیم
117
00:03:46,080 –> 00:03:47,280
به این
118
00:03:47,280 –> 00:03:50,080
نقطه بعدی نگاه کنیم، می خواهیم به جای اوه
119
00:03:50,080 –> 00:03:51,680
دو نگاه کنیم و بعد چه
120
00:03:51,680 –> 00:03:52,720
اگر بخواهیم در
121
00:03:52,720 –> 00:03:54,799
این نقطه و غیره نگاه کنیم، چگونه به
122
00:03:54,799 –> 00:03:56,400
جای
123
00:03:56,400 –> 00:03:58,319
گرفتن این مقدار ورودی و پایان دادن به آن، این کار را به خوبی انجام خواهیم داد.
124
00:03:58,319 –> 00:03:59,680
125
00:03:59,680 –> 00:04:03,599
126
00:04:03,599 –> 00:04:06,560
هر بار که می دانیم نقطه متفاوتی
127
00:04:06,560 –> 00:04:07,360
را
128
00:04:07,360 –> 00:04:10,560
در ورودی به سمت راست جابه جا می کنیم، آن را با یک جابجا شده به چپ پایان می دهیم، چگونه می توانیم یک نقطه را
129
00:04:10,560 –> 00:04:13,040
به چپ منتقل کنیم که این یک عملیات باینری دیگر است
130
00:04:13,040 –> 00:04:14,400
، به عنوان مثال اگر ما
131
00:04:14,400 –> 00:04:15,760
چیزی شبیه صفر
132
00:04:15,760 –> 00:04:19,040
یک بود و سپس
133
00:04:19,040 –> 00:04:21,358
134
00:04:21,358 –> 00:04:23,040
عملیات شیفت را به چپ انجام می دهیم، اگر آن را به چپ منتقل
135
00:04:23,040 –> 00:04:24,960
کنیم، همه
136
00:04:24,960 –> 00:04:27,040
بیت ها را یک به چپ جابه جا می کند
137
00:04:27,040 –> 00:04:30,400
و جای یک نقطه را می گیرد. با یک صفر،
138
00:04:30,400 –> 00:04:31,759
بنابراین در خروجی،
139
00:04:31,759 –> 00:04:34,400
وقتی این را یک به یک جابجا می کنیم، این را دریافت می کنیم، این را به دست می
140
00:04:34,400 –> 00:04:36,000
آوریم، بیت
141
00:04:36,000 –> 00:04:38,960
را یک به چپ به سمت چپ منتقل می کنیم و متوجه می شویم که
142
00:04:38,960 –> 00:04:40,560
اگر یک اینجا داشته باشیم و سپس یک صفر
143
00:04:40,560 –> 00:04:42,000
داشته باشیم. اینجا و بعد ما
144
00:04:42,000 –> 00:04:44,400
صفرهایی برای باقیمانده آن
145
00:04:44,400 –> 00:04:45,040
داریم وقتی که
146
00:04:45,040 –> 00:04:48,080
مقدار خروجی را بدست آوریم، یک عدد صحیح 32 بیتی نیز خواهد بود،
147
00:04:48,080 –> 00:04:49,600
148
00:04:49,600 –> 00:04:51,600
اما این تنها نقطه ای است که ما به آن اهمیت می دهیم
149
00:04:51,600 –> 00:04:52,960
150
00:04:52,960 –> 00:04:54,960
زیرا بقیه نقاط به طور پیش فرض صفر خواهد بود
151
00:04:54,960 –> 00:04:56,080
152
00:04:56,080 –> 00:04:58,639
زیرا اگر ما و صفر با هر
153
00:04:58,639 –> 00:04:59,199
154
00:04:59,199 –> 00:05:00,800
چیز دیگری، یک صفر در خروجی w بدست می آوریم.
155
00:05:00,800 –> 00:05:03,120
آیا می دانید که اینجا
156
00:05:03,120 –> 00:05:04,960
یک داریم یا نه، اگر ما و اینها با
157
00:05:04,960 –> 00:05:06,880
هم یک صفر در خروجی
158
00:05:06,880 –> 00:05:08,960
بگیریم خوب است، بنابراین نشان می دهد که چگونه
159
00:05:08,960 –> 00:05:10,160
هر یک از این بیت ها را دریافت می کنیم،
160
00:05:10,160 –> 00:05:13,039
حالا چگونه آنها را در
161
00:05:13,039 –> 00:05:13,680
خروجی
162
00:05:13,680 –> 00:05:17,360
به یاد داشته باشید که چگونه در ابتدا ما یک نتیجه داشتیم
163
00:05:17,360 –> 00:05:20,880
که فقط با صفر پر شده بود
164
00:05:20,880 –> 00:05:22,000
و ما از
165
00:05:22,000 –> 00:05:24,000
همان ابتدا شروع
166
00:05:24,000 –> 00:05:25,440
می کنیم.
167
00:05:25,440 –> 00:05:27,680
168
00:05:27,680 –> 00:05:29,440
ما فقط میخواهیم
169
00:05:29,440 –> 00:05:31,360
خروجی را صفر
170
00:05:31,360 –> 00:05:32,800
بگذاریم و سپس میخواهیم به نقطه بعدی
171
00:05:32,800 –> 00:05:34,479
در سمت راست
172
00:05:34,479 –> 00:05:36,240
برویم و دقیقاً همان کار را انجام دهی