Bisakah seseorang menjelaskan kepada saya penggunaan <<
dan >>
di Go? Saya rasa ini mirip dengan beberapa bahasa lain.
go
bitwise-operators
brianoh
sumber
sumber
Dari spesifikasi di http://golang.org/doc/go_spec.html , tampaknya setidaknya dengan bilangan bulat, ini adalah pergeseran biner. misalnya, biner 0b00001000 >> 1 akan menjadi 0b00000100, dan 0b00001000 << 1 akan menjadi 0b00010000.
Go tampaknya tidak menerima notasi 0b untuk bilangan bulat biner. Saya hanya menggunakannya sebagai contoh. Dalam desimal, 8 >> 1 adalah 4, dan 8 << 1 adalah 16. Menggeser ke kiri dengan satu sama dengan mengalikan dengan 2, dan menggeser ke kanan dengan satu sama dengan membagi dua, membuang sisa.
sumber
Operator << dan >> adalah Operator Aritmatika Go .
sumber
Mereka pada dasarnya adalah operator Aritmatika dan yang sama dalam bahasa lain di sini adalah Contoh dasar PHP, C, Go
PERGILAH
GO Demo
C
C Demo
PHP
Demo PHP
Mereka semua akan menghasilkan
sumber
Go << dan >> mirip dengan shift (yaitu: pembagian atau perkalian dengan pangkat 2) dalam bahasa lain, tetapi karena Go adalah bahasa yang lebih aman daripada C / C ++ ia melakukan beberapa pekerjaan tambahan ketika jumlah shift berupa angka .
Instruksi shift pada CPU x86 hanya mempertimbangkan 5 bit (6 bit pada 64-bit CPU x86) dari hitungan shift. Dalam bahasa seperti C / C ++, operator shift diterjemahkan menjadi satu instruksi CPU.
Kode Go berikut
cetakan
sementara program C / C ++ akan mencetak
sumber
<<
atau>>
dalam C / C ++?<<
adalah shift kiri.>>
adalah pergeseran kanan yang memperpanjang tanda ketika operan kiri adalah bilangan bulat bertanda, dan pergeseran kanan yang memperpanjang nol ketika operan kiri adalah bilangan bulat yang tidak bertanda.Untuk lebih memahami
>>
pikirkanJadi ketika diterapkan ke bilangan bulat tak bertanda, bit di sebelah kiri diisi dengan nol, sedangkan bila diterapkan ke bilangan bulat bertanda, bit di sebelah kiri diisi dengan bit paling kiri (yaitu 1 ketika bilangan bulat bertanda negatif sesuai 2 melengkapi).
sumber
Dalam matematika desimal , saat kita mengalikan atau membagi dengan 10 , kita memberi pengaruh pada angka nol di ujung angka.
Dalam biner , 2 memiliki efek yang sama. Jadi kami menambahkan nol di akhir, atau menghapus digit terakhir
sumber