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, 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!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

short ialah jenis data primitif dalam Java yang mewakili integer bertanda 16-bit dalam julat -32,768 hingga 32,767. Ia sering digunakan untuk mewakili integer kecil, seperti pembilang atau ID, dan menyokong operasi aritmetik asas dan penukaran jenis. Tetapi kerana pendek ialah jenis yang ditandatangani, anda perlu berhati-hati apabila menggunakan pembahagian untuk mengelakkan limpahan atau aliran bawah.

Fungsi IFNULL menyemak sama ada ungkapan adalah NULL dan mengembalikan nilai lalai yang ditentukan jika ya, jika tidak, ia mengembalikan nilai ungkapan. Ia menghalang nilai nol daripada menyebabkan ralat, membenarkan manipulasi nilai nol, dan meningkatkan kebolehbacaan pertanyaan. Penggunaan termasuk: menggantikan nilai nol dengan nilai lalai, tidak termasuk nilai nol daripada pengiraan, dan penggunaan bersarang untuk mengendalikan berbilang situasi nilai nol.

Dalam bahasa C, tingkah laku operator bahagian / bergantung pada jenis data operan: Pembahagian integer: Apabila operan ialah integer, pembahagian integer dilakukan dan hasilnya dibundarkan ke bawah. Pembahagian titik terapung: Apabila operan ialah nombor titik terapung, pembahagian titik terapung dilakukan dan hasilnya ialah nombor titik terapung. Penukaran jenis: Apabila satu operan ialah integer dan satu lagi tidak, integer secara tersirat ditukar kepada nombor titik terapung, dan kemudian pembahagian titik terapung dilakukan. Pembahagi dengan 0: Ralat matematik berlaku apabila pembahagi ialah 0. Operasi modulo: Gunakan operator % untuk operasi modulo dan bukannya pembahagian modulo.

Jenis char dalam Java digunakan untuk menyimpan satu aksara Unicode, merangkumi 2 bait, antara U+0000 hingga U+FFFF Ia digunakan terutamanya untuk menyimpan aksara teks Ia boleh dimulakan melalui petikan tunggal atau urutan melarikan diri Unicode. dan boleh mengambil bahagian dalam perbandingan, Kesamaan, ketidaksamaan dan operasi bergabung boleh ditukar secara tersirat kepada jenis int atau ditukar secara eksplisit kepada objek Aksara.

Peraturan pemadanan lampau fungsi C++ adalah seperti berikut: padankan nombor dan jenis parameter dalam panggilan. Susunan parameter mestilah konsisten. Constness dan pengubah rujukan mesti sepadan. Parameter lalai boleh digunakan.

Jenis parameter fungsi PHP termasuk jenis skalar (integer, nombor titik terapung, rentetan, nilai Boolean, nilai nol), jenis komposit (tatasusunan, objek) dan jenis khas (fungsi panggil balik, parameter berubah). Fungsi boleh menukar parameter jenis yang berbeza secara automatik, tetapi ia juga boleh memaksa jenis tertentu melalui pengisytiharan jenis untuk mengelakkan penukaran tidak sengaja dan memastikan ketepatan parameter.

Ya, PHP menyokong penukaran tersirat nilai pulangan fungsi: secara lalai, jenis pulangan fungsi tidak ditukar secara tersirat. Dalam sesetengah kes, PHP mungkin perlu menukar jenis nilai pulangan agar serasi dengan operasi lain. Sebagai contoh, fungsi yang mengembalikan rentetan boleh ditukar secara tersirat kepada integer. Penukaran jenis tersirat boleh menyebabkan akibat yang tidak diingini dan harus digunakan dengan berhati-hati.

Pemalar berangka dalam bahasa C mempunyai kaedah perwakilan berikut: integer perpuluhan integer perlapanan heksadesimal integer perpuluhan nombor titik terapung saintifik notasi aksara pemalar pemalar Boolean
