Svmmarivm
Integer programmatis non est integer mathematicae: est seqventia finita bitorvm, et bit exacte valores distinctos continere possvnt. Haec lectio hanc repraesentationem eivsqve conseqventias perscrvtatvr. Docet qvomodo integer in basi 2 et in basi 16 scribatvr et qvomodo specificationibvs formae {:b} et {:x} confirmetvr; genera integra lingvae C++ praesentat, eorvm magnitvdinem, qvae per sizeof mensvratvr, et spativm valorvm, qvod per std::numeric_limits inqviritvr; explicat qvomodo nvmeri negativi per complementvm ad dvo repraesententvr et cvr spativm valorvm non sit symmetricvm; integros cvm signo ab integris sine signo distingvit, et perscrvtatvr qvid accidat cvm operatio extra spativm valorvm exit: in integris sine signo norma eventvm definit, qvi est arithmetica modvlo ; in integris cvm signo non definit, et programma extra omnem cavtionem cadit. Finem facit ratio qva genvs cvivsqve dati eligatvr.
Proposita discendi
- Integros inter bases 10, 2 et 16 convertere, et conversionem specificationibvs formae
{:b}et{:x}confirmare. - Spativm valorvm integri bitorvm cvm signo et sine signo compvtare, idqve per
std::numeric_limitsetsizeofconfirmare. - Complementvm ad dvo explicare et repraesentationem nvmeri negativi parvi in octo bit scribere.
- Exvndationem cvm signo, qvae modvs agendi indefinitvs est, ab exvndatione sine signo, qvae arithmetica modvlo est, distingvere, et eventvm posterioris praedicere.
- Genvs integrvm aptvm ad datvm eligere secvndvm spativm valorvm eivs praevisvm, generibvs latitvdinis fixae ex
<cstdint>adhibitis cvm latitvdo refert.
Systemata positionalia
Lectio Variabiles et memoria variabilem vt cellam cvm nomine, genere et valore praesentavit. Memoria avtem digitos decimales non servat: servat bit, qvorvm vnvmqvodqve 0 vel 1 valet, in octetos octo bitorvm collecta (norma saltem octo exigit; omnia systemata hodierna exacte octo adhibent). Vt sciatvr igitvr qvos valores variabilis integra accipere possit, sciendvm est qvomodo nvmervs dvobvs tantvm digitis scribatvr, et hoc facit systema positionale basis 2.
In systemate positionali basis , qvisqve digitvs valet secvndvm locvm qvem occvpat: vltimvs per mvltiplicatvr, praecedens per , qvi hvnc praecedit per , et sic deinceps. In basi 10, significat . In basi 2 digiti svnt 0 et 1, et pondera svnt potentiae nvmeri 2: Ex qvo seqvitvr regvla transevndi a binario ad decimale: addvntvr pondera locorvm in qvibvs 1 est.
Figvra dispositionem octo bitorvm 00101101 legit. Svpra qvamqve cellam pondvs eivs est; bit qvae 1 valent singillatim, a sinistra ad dextram, accendvntvr, et valor pondera eorvm accvmvlat.
Demonstratio
Octo cellae, omnes exstinctae: valor est 0. Pondera, a dextra ad sinistram, svnt .
Primvm bit 1 valens in loco ponderis 32 est: valor accvmvlatvs est 32.
Seqvens, in loco ponderis 8: .
Seqvens, in loco ponderis 4: .
Vltimvm, in loco ponderis 1: . Dispositio
00101101nvmervm 45 repraesentat.Qvaterna collecta, bit digitos hexadecimales dant:
0010est 2 et1101est 13, qvi in basi 16 scribitvrd. Ergo 45 in basi 16 scribitvr2d.
Iter inversvm, a decimali ad binarivm, divisionibvs svccessivis percvrritvr: nvmervs per 2 dividitvr, residvvm (0 vel 1) notatvr, et idem cvm qvotiente repetitvr donec ad 0 pervenitvr; residva, ab vltimo ad primvm lecta, svnt digiti binarii. Pro 45: , , , , , ; retro lecta, residva dant 101101, qvod cvm dvabvs cifris ad sinistram est dispositio figvrae. Ratio est qvod qvodqve residvvm est digitvs postremvs nvmeri qvi dividitvr, et qvisqve qvotiens est ille nvmervs vno loco ad dextram translatvs. Eadem methodvs pro qvalibet basi valet: pro basi 16 per 16 dividitvr, et residva a 10 ad 15 litteris a ad f scribvntvr.
Basis 16, sive hexadecimalis, commoditatis cavsa exstat: cvm sit, qvisqve digitvs hexadecimalis exacte qvattvor bit respondet, et octetvs dvobvs digitis scribitvr. Nvmervs 32 bitorvm triginta dvos digitos in binario occvpat, qvi difficile legvntvr, et octo tantvm in hexadecimali, qvi sine calcvlo, digitvs post digitvm, in binarivm convertvntvr. Ideo programmatores memoriam in hexadecimali legvnt. Fvndamentvm mathematicvm systematvm positionalivm in cvrsv Algebra et Geometria I traditvr, in lectione «Systemata nvmerationis positionalis».
C++ integros directe in his basibvs scriptos admittit: litterale qvod a 0b incipit binarivm est, et qvod a 0x incipit, hexadecimale. Intra qvodvis litterale apostrophvs vt separator digitorvm poni potest, qvem compilator neglegit et lector grate accipit: 0b0010'1101, 1'000'000. In exitv, specificatio formae {:b} integrvm in binario scribit, {:x} in hexadecimali litteris minvscvlis et {:X} maivscvlis; signvm # praefixvm anteponit, et latitvdo cvi cifra praecedit cifris ad sinistram complet.
#include <print>int main(){ const int decimal{45}; const int binary{0b0010'1101}; const int hexadecimal{0x2d}; std::println("{} {} {}", decimal, binary, hexadecimal); std::println("binarivs: {:b}", decimal); std::println("octo bit: {:08b}", decimal); std::println("hexadecimalis: {:x} {:X} {:#x}", decimal, decimal, decimal);}45 45 45binarivs: 101101octo bit: 00101101hexadecimalis: 2d 2D 0x2dTres variabiles evndem valorem servant, in tribvs basibvs scriptvm, et prima linea exitvs id ostendit: basis est proprietas scriptvrae, non nvmeri. Memoria in tribvs casibvs eandem dispositionem bitorvm servat. Specificatio {:b} cifras ad sinistram omittit; {:08b} octo digitos complet.
Argvmentvm oneratvr…