Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perbezaan dalam hasil pengiraan anjakan bitwise

Perbezaan dalam hasil pengiraan anjakan bitwise

WBOY
WBOYke hadapan
2024-02-08 21:11:131011semak imbas

Perbezaan dalam hasil pengiraan anjakan bitwise

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.

Kandungan soalan

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.

Penyelesaian

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, nvar 使得表达式变得非常量,因此 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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam