Différents T yp es d'a rr ays
(
objets semblables aux tableaux
)
JAVASCRIPT
(Programmation Internet)
VOL. XXII
Po u r D é b u t a n t
J.B. Dadet DIASOLUKA Luyalu Nzoyifuanga
+243 - 851278216 - 899508675 - 995624714 - 902263541 - 813572818
diasfb@mail2world.com
Quest-ce qui se passe quand vous appliquez un « OR binaire » par
exemple au nombre « 3000000000.1 » comme ceci :
3000000000.1 | 0 ?
Ça donnera
3000000000.1 | 0 = -1294967296
Vous y comprenez quelque chose ? Le code ci-après vous l’explique très
facilement grâce aux UintXArray, IntXArray, FloatXArray bref ce qui
est convenu dappeler Typed Array.
Il existe en effet deux types fondamentaux dArrays : les Arrays ordinaires
et les ainsi dits « Typed Arrays » qui se rapportent aux nombres typés
dont BigInt et float32 selon le navigateur.
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-XXII
Différents types dArrays
- 2/76 - samedi, 1. juin 2019 (12:12 )
LES « TYPED ARRAYS » :
Dabord il faut savoir que « TypedArray » nest pas un type de données ou
un objet défini, mais une appellation générique.
Les Typed Arrays (Arrays typés) traitent tous leurs éléments constitutifs
comme étant de leur propre type donc d’un même type, contrairement aux
Arrays ordinaires qui peuvent regrouper toute sorte de types. Les deux
groupes principaux dArrays typées sont :
I. Pour les entiers (« int ») :
1. Les Arrays Signées ([Signed] Integer Arrays) dont les éléments
sont traités comme des nombres signés (le bit d’extrême gauche
étant considéré comme étant le flag du signe) : les IntXArray
2. Les Arrays Non Signées (Unsigned Integer Arrays) dont tous les
bits sont considérés comme pondérant le nombre : les Uint-
XArray.
Dans les deux cas ci-dessus, « X » peut avoir l’une des valeurs suivantes :
8, 16, 32.
Dans le deuxième type (Arrays Non Signées [Unsigned Integer Arrays])
existe en outre un Typed Array « Uint8ClampedArray » dont les élé-
ments sont considérés comme étant des « entiers 8bits non signés » (de la
taille d’un octet) et dont la valeur est plafonnée à 255 : toute valeur
d’élément supérieur à 255 est automatiquement ramenée à 255.
Il nexiste pas encore le Int64Array ni le Uint64Array, mais certains
browsers comme le Yandex Version 18.9.1.954 proposent les types Bi-
gInt64Array et BigUint64Array, qui nexistent pas dans Firefox Quantum
57.0.
II. Pour les rationnels (« float ») il existe :
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-XXII
Différents types dArrays
- 3/76 - samedi, 1. juin 2019 (12:12 )
« Float32Array » et « Float64Array ».
<script type="text/javascript"> "use strict";
// let bI = BigInt(-1)
// Pour FIREFOX : ReferenceError:
// BigInt is not defined test.html:6:7
// console.log("BigInt(-1) =",bI);
// let f32 = float32(-1)
// Pour FIREFOX : ReferenceError:
// float32 is not defined
// console.log("float32(-1) =",f32);
console.log(".!. ATTENTION .!.")
let m=3000000000.1
console.log(m+" | 0 = ", m | 0);
(function(){
let b=null;
console.log("Parce que En DOUBLE-WORD (32 bits) : ")
console.log(m +"d = "+ (b=m.toString(2))+"b");
console.log("10110010110100000101111000000000b =");
console.log(
"1011'0010''1101'0000'''0101'1110''0000'0000b = ",
m|0 + "d");
console.log(
"Notez le bit (ou flag) du signe qui est à 1.");
}
)();
console.log("".padEnd(3,"\n"));
console.log("ES10 n'utilise pas encore le 64 bits : ")
m=new Uint8Array ([3000000000.1])
console.log("Uint8Array ([30000000000.1]) = "+m.toString());
m=new Uint16Array ([3000000000.1])
console.log(
"Uint16Array ([30000000000.1]) = "+m.toString());
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-XXII
Différents types dArrays
- 4/76 - samedi, 1. juin 2019 (12:12 )
m=new Uint32Array ([3000000000.1])
console.log(
"Uint32Array ([30000000000.1]) = "+m.toString());
console.log("");
m=new Uint8ClampedArray ([3000000000.1])
console.log(
"Uint8ClampedArray ([30000000000.1]) = "+m.toString());
console.log("");
m=new Int8Array ([3000000000.1])
console.log("Int8Array ([30000000000.1]) = "+m.toString());
m=new Int16Array ([3000000000.1])
console.log("Int16Array ([30000000000.1]) = "+m.toString());
m=new Int32Array ([3000000000.1])
console.log("Int32Array ([30000000000.1]) = "+m.toString());
console.log("");
m=new Float32Array ([3000000000.1])
console.log(
"Float32Array ([30000000000.1]) = "+m.toString());
m=new Float64Array ([3000000000.1])
console.log(
"Float64Array ([30000000000.1]) = "+m.toString());
console.log("");
// m=new BigInt64Array ([3000000000])
// Pour FIREFOX : ReferenceError:
// BigInt64Array is not defined
// console.log("BigInt64Array ([30000000000]) = "+m.toStrin
g());
// m=new BigUint64Array ([3000000000])
// Pour FIREFOX :ReferenceError:
// BigUint64Array is not defined
J.D.B. DIASOLUKA Nz. Luyalu
JavaScript Tome-XXII
Différents types dArrays
- 5/76 - samedi, 1. juin 2019 (12:12 )
// console.log("BigUint64Array ([30000000000]) = "+m.toStri
ng());
</script>
Exécution avec YANDEX :
test.html:5 BigInt(-1) = -1n
test.html:12 .!. ATTENTION .!.
test.html:14 3000000000.1 | 0 = -1294967296
test.html:18 Parce que En DOUBLE-WORD (32 bits) :
test.html:19 3000000000.1d =
10110010110100000101111000000000.000110011001100110011b
test.html:20 10110010110100000101111000000000b =
test.html:21
1011'0010''1101'0000'''0101'1110''0000'0000b =
-1294967296
test.html:24 Notez le bit (ou flag) du signe qui est à 1.
test.html:30
test.html:31 ES10 n'utilise pas encore le 64 bits :
test.html:34 Uint8Array ([30000000000.1]) = 0
test.html:37 Uint16Array ([30000000000.1]) = 24064
test.html:40 Uint32Array ([30000000000.1]) = 3000000000
test.html:42
test.html:45 Uint8ClampedArray ([30000000000.1]) = 255
test.html:47
test.html:50 Int8Array ([30000000000.1]) = 0
test.html:53 Int16Array ([30000000000.1]) = 24064
test.html:56 Int32Array ([30000000000.1]) = -1294967296
test.html:58
test.html:61 Float32Array ([30000000000.1]) = 3000000000
test.html:64 Float64Array ([30000000000.1]) = 3000000000.1
1 / 76 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !