Saya perhatikan bahwa saya dapat melakukan hal-hal seperti 2 << 5
mendapatkan 64 dan 1000 >> 2
mendapatkan 250.
Juga bisa saya gunakan >>
di print
:
print >>obj, "Hello world"
Apa yang terjadi disini?
python
syntax
operator-keyword
pengguna3201152
sumber
sumber
<<
,>>
,&
,|
,~
, dan^
lakukan?Jawaban:
Saya kira ini pertanyaan penting dan belum terjawab (sepertinya OP sudah tahu tentang operator shift). Izinkan saya mencoba menjawab, >> operator dalam contoh Anda digunakan untuk dua tujuan berbeda. Dalam istilah c ++ operator ini kelebihan beban. Pada contoh pertama digunakan sebagai operator bitwise (shift kiri), sedangkan pada skenario kedua hanya digunakan sebagai output redirection. yaitu
2 << 5 # shift to left by 5 bits 2 >> 5 # shift to right by 5 bits print >> obj, "Hello world" # redirect the output to obj,
contoh
with open('foo.txt', 'w') as obj: print >> obj, "Hello world" # hello world now saved in foo.txt
memperbarui:
Dalam python 3 dimungkinkan untuk memberikan argumen file secara langsung sebagai berikut:
print("Hello world", file=open("foo.txt", "a")) # hello world now saved in foo.txt
sumber
__rshift__
dan__lshift__
.Ini adalah operator shift bitwise.
Mengutip dari dokumen :
Mengembalikan
x
dengan bit yang digeser ke kiri sebesar tempat y (dan bit baru di sisi kanan adalah nol). Ini sama dengan mengalikanx
dengan2**y
.Mengembalikan
x
dengan bit yang digeser ke kanan sebesar y tempat. Ini sama dengan membagix
dengan2**y
.sumber
print bin(1)
,print bin(1 << 1)
,print bin(17)
,print bin(17 >> 1)
dan sebagainya. Anda dapat melihat cara kerjanya tanpa penjelasan.print >>obj, "Hello world"
2 << 5
dan1000 >> 2
¯_ (ツ) _ / ¯Nilai biner sebenarnya dari 12 adalah "00 1100" ketika kita mengeksekusi pernyataan di atas. Shift kiri (2 tempat bergeser ke kiri) mengembalikan nilai 48 nilai binernya adalah "11 0000".
Nilai biner 48 adalah "11 0000", setelah menjalankan pernyataan di atas Pergeseran kanan (2 tempat bergeser ke kanan) mengembalikan nilai 12 nilai binernya adalah "00 1100".
sumber
Kasus lain yang melibatkan
print >>obj, "Hello World"
adalah sintaks "print chevron" untukprint
pernyataan di Python 2 (dihapus dengan Python 3, diganti denganfile
argumenprint()
fungsi ). Alih-alih menulis ke keluaran standar, keluaran tersebut diteruskan keobj.write()
metode. Contoh tipikal adalah objek file yang memilikiwrite()
metode. Lihat jawaban untuk pertanyaan yang lebih baru: Tanda ganda lebih besar dari pada Python .sumber
Mereka adalah operator bit shift yang ada di banyak bahasa pemrograman mainstream,
<<
merupakan shift kiri dan>>
shift kanan, mereka dapat ditunjukkan seperti tabel berikut, asumsikan integer hanya membutuhkan 1 byte dalam memori.| operate | bit value | octal value | description | | ------- | --------- | ----------- | -------------------------------------------------------- | | | 00000100 | 4 | | | 4 << 2 | 00010000 | 16 | move all bits to left 2 bits, filled with 0 at the right | | 16 >> 2 | 00000100 | 4 | move all bits to right 2 bits, filled with 0 at the left |
sumber
Ini adalah operator shift
sumber
<< Mean any given number will be multiply by 2the power for exp:- 2<<2=2*2'1=4 6<<2'4=6*2*2*2*2*2=64
sumber