উত্তর:
সুপার (সম্ভবত ওভার) সরলিকৃত সংজ্ঞাটি হ'ল <<
"বার 2" এর জন্য ব্যবহৃত হয় এবং >>
এটি "2 দ্বারা বিভক্ত" - এবং এর পরে সংখ্যাটি কতবার হয়।
সুতরাং n << x
"এন বার 2, এক্স বার"। এবং y >> z
"y 2 দ্বারা ভাগ করা হয়, z বার"।
উদাহরণস্বরূপ, 1 << 5
"1 বার 2, 5 বার" বা 32 And 32 >> 5
এবং "32 কে 2, 5 বার" বা 1 দ্বারা ভাগ করা হয়।
অন্যান্য সমস্ত উত্তর আরও প্রযুক্তিগত সংজ্ঞা দেয়, তবে কেউ এটিকে সত্যিই কথায় কথায় প্রকাশ করেনি এবং আমি ভেবেছিলাম যে আপনি এটি চাইতে পারেন।
Http://golang.org/doc/go_spec.html এ অনুমান থেকে , মনে হচ্ছে কমপক্ষে পূর্ণসংখ্যার সাহায্যে এটি একটি বাইনারি স্থানান্তর। উদাহরণস্বরূপ, বাইনারি 0b00001000 >> 1 হবে 0b00000100, এবং 0b00001000 << 1 হবে 0b00010000।
স্পষ্টতই যান বাইনারি পূর্ণসংখ্যার জন্য 0 বি স্বীকৃতি গ্রহণ করে না। আমি এটি উদাহরণের জন্য ব্যবহার করছিলাম। দশমিক, 8 >> 1 হ'ল 4, এবং 8 << 1 হল 16 one
<< এবং >> অপারেটররা হলেন গো অ্যারিম্যাটিক অপারেটর ।
<< left shift integer << unsigned integer
>> right shift integer >> unsigned integer
শিফট অপারেটরগুলি ডান অপারেন্ড দ্বারা নির্দিষ্ট শিফট গণনা দ্বারা বাম অপারেন্ডকে স্থানান্তরিত করে। বাম অপারেন্ডটি স্বাক্ষরিত পূর্ণসংখ্যা এবং লজিকাল শিফট যদি এটি স্বাক্ষরবিহীন পূর্ণসংখ্য হয় তবে তারা গাণিতিক শিফটগুলি বাস্তবায়ন করে। শিফট গণনাটি একটি স্বাক্ষরবিহীন পূর্ণসংখ্যার হতে হবে। শিফ্ট কাউন্টে কোনও উচ্চতর সীমা নেই। শিফটগুলি এমনভাবে আচরণ করে যেন বাম ক্রিয়াকলাপটি n এর শিফ্ট কাউন্টের জন্য 1 দ্বারা 1 বার স্থানান্তরিত হয়। ফলস্বরূপ, x << 1 এক্স x 2 এবং x >> 1 এর সমান তবে নেতিবাচক অনন্তের দিকে ছাঁটা হয়েছে।
এগুলি মূলত এরিটিমেটিক অপারেটর এবং অন্যান্য ভাষাগুলিতে এটি একই রকম একটি বেসিক পিএইচপি, সি, গো উদাহরণ
যাওয়া
package main
import (
"fmt"
)
func main() {
var t , i uint
t , i = 1 , 1
for i = 1 ; i < 10 ; i++ {
fmt.Printf("%d << %d = %d \n", t , i , t<<i)
}
fmt.Println()
t = 512
for i = 1 ; i < 10 ; i++ {
fmt.Printf("%d >> %d = %d \n", t , i , t>>i)
}
}
সি
#include <stdio.h>
int main()
{
int t = 1 ;
int i = 1 ;
for(i = 1; i < 10; i++) {
printf("%d << %d = %d \n", t, i, t << i);
}
printf("\n");
t = 512;
for(i = 1; i < 10; i++) {
printf("%d >> %d = %d \n", t, i, t >> i);
}
return 0;
}
পিএইচপি
$t = $i = 1;
for($i = 1; $i < 10; $i++) {
printf("%d << %d = %d \n", $t, $i, $t << $i);
}
print PHP_EOL;
$t = 512;
for($i = 1; $i < 10; $i++) {
printf("%d >> %d = %d \n", $t, $i, $t >> $i);
}
তারা সব আউটপুট হবে
1 << 1 = 2
1 << 2 = 4
1 << 3 = 8
1 << 4 = 16
1 << 5 = 32
1 << 6 = 64
1 << 7 = 128
1 << 8 = 256
1 << 9 = 512
512 >> 1 = 256
512 >> 2 = 128
512 >> 3 = 64
512 >> 4 = 32
512 >> 5 = 16
512 >> 6 = 8
512 >> 7 = 4
512 >> 8 = 2
512 >> 9 = 1
গো এর << এবং >> অন্যান্য ভাষায় শিফটের সমান (যা: 2 এর শক্তির দ্বারা বিভাজন বা গুণন) তবে সি / সি ++ এর চেয়ে গো সুরক্ষিত ভাষা হওয়ায় শিফট গণনাটি যখন একটি সংখ্যা হয় তখন এটি কিছু অতিরিক্ত কাজ করে ।
X86 সিপিইউগুলিতে শিফট নির্দেশাবলী শিফট গণনার মাত্র 5 বিট (-৪ বিট x86 সিপিইউতে 6 বিট) বিবেচনা করে। সি / সি ++ এর মতো ভাষায় শিফট অপারেটর একটি সিপিইউ নির্দেশে অনুবাদ করে।
নিম্নলিখিত গো কোড
x := 10
y := uint(1025) // A big shift count
println(x >> y)
println(x << y)
কপি করে প্রিন্ট
0
0
যখন একটি সি / সি ++ প্রোগ্রাম মুদ্রণ করবে
5
20
<<
শিফট বাম >>
বাম অপারেন্ডটি একটি স্বাক্ষরিত পূর্ণসংখ্যা হলে ডান শিফ্টকে সাইন-প্রসারিত করা হয় এবং বাম অপারেন্ডটি স্বাক্ষরবিহীন পূর্ণসংখ্য হয় যখন শূন্য-প্রসারিত ডান শিফট হয়।
ভালভাবে বুঝতে >>
মনে
var u uint32 = 0x80000000;
var i int32 = -2;
u >> 1; // Is 0x40000000 similar to >>> in Java
i >> 1; // Is -1 similar to >> in Java
সুতরাং যখন স্বাক্ষরবিহীন পূর্ণসংখ্যার সাথে প্রয়োগ করা হয়, বামদিকে বিটগুলি শূন্য দ্বারা পূর্ণ হয়, যখন একটি স্বাক্ষরিত পূর্ণসংখ্যার সাথে প্রয়োগ করা হয়, বামদিকে বিটগুলি বামদিকের বিট দিয়ে পূর্ণ হয় (যা 1 এর মধ্যে স্বাক্ষরিত পূর্ণসংখ্যা 2 এর হিসাবে নেতিবাচক থাকে) পরিপূর্ণ)।
ইন দশমিক গণিত , যখন আমরা সংখ্যাবৃদ্ধি বা ডিভাইড 10 দ্বারা , আমরা শূন্য সংখ্যা প্রান্তে প্রভাব।
ইন বাইনারি , 2 একই প্রভাব রয়েছে। সুতরাং আমরা শেষের দিকে একটি শূন্য যুক্ত করছি, বা শেষ সংখ্যাটি সরিয়ে দিচ্ছি