9 007 199 254 740 991 උපරිම සහ ආරක්ෂිත පූර්ණ සංඛ්යාවක් බව තහවුරු කර ගැනීමේ ප්රති result true
ල මීට පෙර බොහෝ පිළිතුරු මගින් පෙන්වා දී ඇත.9007199254740992 === 9007199254740992 + 1
අපි දිගටම සමුච්චය කරන්නේ නම්:
input: 9007199254740992 + 1 output: 9007199254740992 // expected: 9007199254740993
input: 9007199254740992 + 2 output: 9007199254740994 // expected: 9007199254740994
input: 9007199254740992 + 3 output: 9007199254740996 // expected: 9007199254740995
input: 9007199254740992 + 4 output: 9007199254740996 // expected: 9007199254740996
9 007 199 254 740 992 ට වඩා වැඩි සංඛ්යාවක් අතරින් නිරූපණය කළ හැක්කේ සංඛ්යා පමණක් බව අපට සොයාගත හැකිය .
ද්වි-නිරවද්යතාව 64-බිට් ද්විමය ආකෘතිය මේ සඳහා ක්රියා කරන්නේ කෙසේද යන්න පැහැදිලි කිරීමට එය පිවිසුමකි . 9 007 199 254 740 992 ආකාරය බලමුමෙම ද්විමය ආකෘතිය භාවිතා කරමින් රඳවා තබා .
4 503 599 627 370 496 සිට එය නිරූපණය කිරීමට කෙටි අනුවාදයක් භාවිතා කිරීම :
1 . 0000 ---- 0000 * 2^52 => 1 0000 ---- 0000.
|-- 52 bits --| |exponent part| |-- 52 bits --|
ඊතලයේ වම්පස, අපට බිට් අගය 1 ක් ද , යාබද රේඩික්ස් ලක්ෂ්යයක් ද ඇත , පසුව ගුණ කිරීමෙන් 2^52
, අපි රැඩික්ස් ලක්ෂ්යය පියවර 52 ක් දකුණට ගෙන යන අතර එය අවසානය දක්වා ගමන් කරයි. දැන් අපට ද්විමය වශයෙන් 4503599627370496 ලැබේ.
දැන් අපි සියලු බිටු 1 ට සකසන තුරු මෙම අගයට 1 ක් රැස් කිරීමට පටන් ගනිමු, එය දශමයෙන් 9 007 199 254 740 991 ට සමාන වේ .
1 . 0000 ---- 0000 * 2^52 => 1 0000 ---- 0000.
(+1)
1 . 0000 ---- 0001 * 2^52 => 1 0000 ---- 0001.
(+1)
1 . 0000 ---- 0010 * 2^52 => 1 0000 ---- 0010.
(+1)
.
.
.
1 . 1111 ---- 1111 * 2^52 => 1 1111 ---- 1111.
දැන්, ද්වි-නිරවද්යතාව 64-බිට් ද්විමය ආකෘතියෙන් , එය භාග සඳහා බිටු 52 ක් තදින් ලබා දී ඇති නිසා, තවත් 1 ක් එකතු කිරීම සඳහා තවත් බිට් ලබා ගත නොහැක, එබැවින් අපට කළ හැක්කේ සියලු බිටු නැවත 0 ට සැකසීම සහ, on ාතීය කොටස හැසිරවීම:
|--> This bit is implicit and persistent.
|
1 . 1111 ---- 1111 * 2^52 => 1 1111 ---- 1111.
|-- 52 bits --| |-- 52 bits --|
(+1)
(radix point has no way to go)
1 . 0000 ---- 0000 * 2^52 * 2 => 1 0000 ---- 0000. * 2
|-- 52 bits --| |-- 52 bits --|
=> 1 . 0000 ---- 0000 * 2^53
|-- 52 bits --|
දැන් අපට ලැබෙන්නේ 9 007 199 254 740 992 වන අතර , ඊට වඩා වැඩි සංඛ්යාවක් සමඟ, ආකෘතියට රඳවා ගත හැකි දෙය භාගයේ 2 ගුණයක් වේ , එයින් අදහස් වන්නේ දැන් භාගයේ සෑම 1 එකතු කිරීමක්ම සැබවින්ම 2 එකතු කිරීමකට සමාන වේ, ඒ නිසා දෙගුණයක් -Precision 64-bit ද්විමය ආකෘතියට 9 007 199 254 740 992 ට වඩා වැඩි වූ විට අමුතු සංඛ්යා රඳවා තබා ගත නොහැක :
(consume 2^52 to move radix point to the end)
1 . 0000 ---- 0001 * 2^53 => 1 0000 ---- 0001. * 2
|-- 52 bits --| |-- 52 bits --|
එබැවින් එම සංඛ්යාව 9 007 199 254 740 992 * 2 = 18 014 398 509 481 984 ට වඩා වැඩි වූ විට, භාගයේ 4 ගුණයක් පමණක් රඳවා ගත හැකිය:
input: 18014398509481984 + 1 output: 18014398509481984 // expected: 18014398509481985
input: 18014398509481984 + 2 output: 18014398509481984 // expected: 18014398509481986
input: 18014398509481984 + 3 output: 18014398509481984 // expected: 18014398509481987
input: 18014398509481984 + 4 output: 18014398509481988 // expected: 18014398509481988
[ 2 251 799 813 685 248 , 4 503 599 627 370 496 ) අතර සංඛ්යාව කෙසේද?
1 . 0000 ---- 0001 * 2^51 => 1 0000 ---- 000.1
|-- 52 bits --| |-- 52 bits --|
රේඩික්ස් ලක්ෂ්යයෙන් පසු බිට් අගය 1 හරියටම 2 ^ -1 වේ. (= 1/2, = 0.5) එබැවින් 4 503 599 627 370 496 (2 ^ 52) ට වඩා අඩු සංඛ්යාවක් ඇති විට, නිඛිලයේ 1/2 ගුණයක් නිරූපණය කිරීමට එක් බිට් එකක් තිබේ :
input: 4503599627370495.5 output: 4503599627370495.5
input: 4503599627370495.75 output: 4503599627370495.5
වඩා අඩු 2 251 799 813 685 248 (2 ^ 51)
input: 2251799813685246.75 output: 2251799813685246.8 // expected: 2251799813685246.75
input: 2251799813685246.25 output: 2251799813685246.2 // expected: 2251799813685246.25
input: 2251799813685246.5 output: 2251799813685246.5
// If the digits exceed 17, JavaScript round it to print it.
//, but the value is held correctly:
input: 2251799813685246.25.toString(2)
output: "111111111111111111111111111111111111111111111111110.01"
input: 2251799813685246.75.toString(2)
output: "111111111111111111111111111111111111111111111111110.11"
input: 2251799813685246.78.toString(2)
output: "111111111111111111111111111111111111111111111111110.11"
On ාතීය කොටසෙහි පවතින පරාසය කුමක්ද? ආකෘතිය ඒ සඳහා බිටු 11 ක් වෙන් කරයි. විකී වෙතින් සම්පූර්ණ ආකෘතිය : (වැඩි විස්තර සඳහා කරුණාකර එහි යන්න)
[! [රූප විස්තරය මෙහි ඇතුළත් කරන්න] [1]] [1]
එබැවින් on ාතීය කොටස 2 ^ 52 බවට පත් කිරීම සඳහා, අපට හරියටම e = 1075 සැකසිය යුතුය.