FIXME:dopsat
Celá čísla v Ruby jsou celými čísly tak jak je znáte ze školy a jiných programovacích jazyků.
Běžně jsou čísla v rozsahu od -230 do 230-1 a nebo od -262 do 262-1 (dle implementace) reprezentována v binární formě a jsou objekty třídy Fixnum
.
Celá čísla mimo tento rozsah jsou uložena v objektech třídy Bignum
a implementována jako řada čísel proměnné délky.
Převod čísla třídy Fixnum
na číslo třídy Bignum
a zpět se děje zcela transparentně dle potřeb, a programátor se o ně nemusí starat.
Celá čísla zapisujeme jako posloupnost znaků 0-9
, _
a znaménaka -
.
Znak podtžítko _
slouží jen k optickému oddělení skupin čísel libovolné délky a nemá žádný jiný význam.
Umožňuje nám místo 6589245
psát mnohem přehledněji 6_589_245
.
Mimo zápis dekadický, který znáte ze školy, můžete použít zápis hexadecimální.
Hexadecimální zápis čísla začíná obdobně jako v jazyce C posloupností znaků 0x
, můžeme psát i s velkým X
0X
.
Rovněž stejně jako v jazyce C je možno psát oktalově, číslo pak začíná nulou 0
.
Mimo tyto způsoby zápisu čísla známé z jazyka C existuje ještě možnost zapsat číslo binárně jako posloupnost nul a jedniček.
Takováto posloupnost pak začíná 0b
nebo 0B
.
Krátký přehled zápisu čísel
456
— celé číslo
-367
— záporné celé číslo
1_099_511_627_776
— velké celé číslo s podtžítky pro lepší čtení
0377
— číslo zadané v osmičkové soustavě, poznáme podle vedoucí nuly.
0xFF
— to stejné číslo v šestnáctkové (hexadecimální) soustavě, poznáme podle předpony 0x
nebo 0X
, pro zápis můžeme použít velká i malá písmena
0b10101010
— číslo 170
v dvojkové (binární) soustavě, poznáme podle předpony 0b
nebo 0B
Podtržítko pro lepší čitelnost velikých čísel můžeme použít také v ostantích zápisech, nikoliv jen dekadickém. Například 0xAB20_BFF0_0FFF
, 0b10101011_00100000
.
# $Id: priklady-zapisu-celych-cisel.ses,v 1.1 2002/12/16 20:34:13 radek Exp $irb(main):001:0>
123456123456
irb(main):002:0>
123_456123456
irb(main):003:0>
-539-539
irb(main):004:0>
123_456_789_012_345_678_901123456789012345678901
irb(main):005:0>
0xFD253
irb(main):006:0>
0x2569_fd56627703126
irb(main):007:0>
0377255
irb(main):008:0>
0b111_01058
irb(main):009:0>
S celými čísly můžeme provádět běžné operace tak jak jsme zvyklí z jiných programovacích jazyků, nebo ze školy. Můžeme je sčítat:
# $Id: scitani-celych-cisel.ses,v 1.1 2003/11/19 23:54:35 radek Exp $456_322 + 32
456354
3478 + 342 + 0xFF
4075
odčítat
# $Id: odcitani-celych-cisel.ses,v 1.1 2003/11/19 23:54:35 radek Exp $22 - 32
-10
0xFF - 0b1010
245
násobit
# $Id: nasobeni-celych-cisel.ses,v 1.1 2003/11/19 23:54:35 radek Exp $16 * 8
128
0x100 * 10
2560
a dělit
# $Id: deleni-celych-cisel.ses,v 1.1 2003/11/19 23:54:35 radek Exp $16 / 4
4
5 / 2
2
7 / 3
2