Maison > développement back-end > Golang > le corps du texte

Différence dans les résultats des calculs de décalage au niveau du bit

WBOY
Libérer: 2024-02-08 21:11:13
avant
1009 Les gens l'ont consulté

Différence dans les résultats des calculs de décalage au niveau du bit

L'éditeur PHP Zimo vous propose un article sur "La différence dans les résultats du calcul du décalage au niveau du bit". En programmation informatique, l'opération de décalage de bits est une opération courante, qui peut effectuer des opérations de décalage vers la gauche ou la droite sur des nombres binaires. Cependant, différents langages de programmation peuvent présenter des différences dans le traitement des résultats des opérations de déplacement, ce qui oblige les développeurs à y prêter attention. Cet article présentera en détail les différences dans les résultats des opérations de déplacement dans différents langages de programmation et fournira quelques exemples pour aider les lecteurs à mieux comprendre et appliquer les opérations de déplacement. Que vous soyez un débutant ou un développeur possédant une certaine base en programmation, vous pouvez acquérir des connaissances et des compétences utiles grâce à cet article.

Contenu de la question

Il existe des différences dans la sortie de mon programme go, en particulier les variables x1 et x2. Voici l'extrait de code correspondant :

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)
}
Copier après la connexion

Résultat attendu : 10 10

Sortie réelle : 0 10

Soyez curieux des raisons qui se cachent derrière les différences et cherchez des explications.

Solution de contournement

Les expressions constantes sont évaluées avec une précision non spécifiée. Attribué à x2 的所有内容都是恒定的,因此它可以正确计算 210 / 100 = 1024 / 100 = 10。而在第一个表达式中,1 被视为 byte,这意味着它会立即移出。 1 必须被视为 byte dans cahier des charges  :

Si l'opérande gauche d'une expression de décalage non const est une constante non typée, elle est d'abord implicitement convertie dans le type supposé lorsque l'expression de décalage est remplacée uniquement par son opérande de gauche.

1 est la constante non typée à gauche, nvar 使得表达式变得非常量,因此 1 必须具有其受让人 x1 的类型,即 byte.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!