Editor PHP Zimo membawakan anda artikel tentang "Perbezaan dalam keputusan pengiraan anjakan bitwise". Dalam pengaturcaraan komputer, operasi anjakan bit ialah operasi biasa, yang boleh melakukan operasi anjakan kiri atau kanan pada nombor binari. Walau bagaimanapun, bahasa pengaturcaraan yang berbeza mungkin mempunyai perbezaan dalam memproses hasil operasi anjakan, yang memerlukan pemaju untuk memberi perhatian. Artikel ini akan memperkenalkan secara terperinci perbezaan dalam hasil operasi anjakan dalam bahasa pengaturcaraan yang berbeza, dan memberikan beberapa contoh untuk membantu pembaca lebih memahami dan menggunakan operasi anjakan. Sama ada anda seorang pemula atau pembangun dengan beberapa asas pengaturcaraan, anda boleh mendapatkan pengetahuan dan kemahiran yang berguna daripada artikel ini.
Terdapat perbezaan dalam output program my go, khususnya pembolehubah x1 dan x2. Berikut ialah coretan kod yang berkaitan:
package main var n uint = 10 const N uint = 10 func main() { var x1 byte = (1 << n) / 100 var x2 byte = (1 << N) / 100 println(x1, x2) }
Output yang dijangkakan: 10 10
Keluaran sebenar: 0 10
Bersikap ingin tahu tentang sebab di sebalik perbezaan dan dapatkan penjelasan.
Ekspresi malar menilai kepada ketepatan yang tidak ditentukan. Ditugaskan kepada x2
的所有内容都是恒定的,因此它可以正确计算 210 / 100 = 1024 / 100 = 10。而在第一个表达式中,1 被视为 byte
,这意味着它会立即移出。 1 必须被视为 byte
dalam spesifikasi :
Jika operan kiri ungkapan anjakan bukan const ialah pemalar yang tidak ditaip, ia mula-mula secara tersirat ditukar kepada jenis yang diandaikan apabila ungkapan anjakan digantikan hanya dengan operan kirinya.
1 ialah pemalar yang tidak ditaip di sebelah kiri, n
为 var
使得表达式变得非常量,因此 1 必须具有其受让人 x1
的类型,即 byte
.
Atas ialah kandungan terperinci Perbezaan dalam hasil pengiraan anjakan bitwise. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!