Perbezaan dalam hasil pengiraan anjakan bitwise

WBOY
Lepaskan: 2024-02-08 21:11:13
ke hadapan
1009 orang telah melayarinya

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)
}
Salin selepas log masuk

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!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!