JavaRush /Java блогы /Random-KK /Компьютер жадындағы нақты сандар. Түсіндіру.
Marianna
Деңгей
Москва

Компьютер жадындағы нақты сандар. Түсіндіру.

Топта жарияланған
Қайырлы күн! Бірінші квесттің «Нақты сандармен жұмыс істеу нюанстары» дәрісін (2-бөлім. Жылжымалы нүктелердің құрылымы) және тақырып бойынша қосымша дәрістерді оқу барысында көптеген адамдар осы тақырып бойынша көптеген сұрақтарға тап болған болуы керек. Бастапқыда мен өзіме қажетті жауаптарды беруге тырыстым, енді мен сізге дәйекті логикалық тәртіпте толық түсінуге көмектесу үшін оларды ұсынамын. 1. Ондық және екілік санау жүйелері. 1.1 Ондық санау жүйесі ең көп таралған жүйелердің бірі болып табылады; ол біз мектепте, университетте, өмірде кез келген компьютерлік емес математикалық есептеулер үшін қолданатын жүйе. Ол 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 (араб) сандарын пайдаланады - барлығы 10 цифр. Сондай-ақ сандар үшін римдік жазу бар, бірақ қазір ол іс жүзінде қолданылмайды. Ондық жүйеде санау бірлік, ондық, жүздік, мыңдық, он мыңдық, жүздік, миллиондық, т.б. - басқаша айтқанда, бұл санның барлық цифрлары. Санның цифры – цифрдың сан жазбасындағы орны (орны). Натурал сандардың ең төменгі цифры (және ең аз маңыздысы ) бірлік цифры (ең оң жақта) болып табылады. Неліктен ол ең елеусіз? Өйткені санның бірлік цифрын түсіру арқылы санның өзі ең аз өзгереді (мысалы, 345 және 340 сандары). Одан кейін екінші цифр ондық цифр және т.б. Мұның бәрі нені білдіреді? Ондық санау жүйесіндегі кез келген бүтін санды алып, оны цифрларға жіктейік . 3297 = 3*1000 + 2*100 + 9*10 + 7 Сонымен, 3297 санында төртінші разрядтың 3 бірлігі (яғни 3 мың), үшінші разрядтың 2 бірлігі (2 жүздік), 9 болатынын анықтаймыз. екінші цифрдың бірліктері (9 ондық) және бірінші цифрдың 7 бірлігі . Басқаша айтқанда, бұл сан үш мың екі жүз тоқсан жеті және сәйкесінше позициялық . Бөлшек (нақты) сандардың цифрлары туралы не деуге болады ? Бөлшек сандардың цифрлары (олардың бөлшек бөлігі) мыналар деп аталады: ондық, жүздік, мыңнан, он мыңнан, т.б. Цифр ондық бөлшектен (санның бүкіл бөлігінен) неғұрлым алыс болса, соғұрлым оның маңыздылығы аз болады (оны алып тастасаңыз, санның мәні аз өзгереді). Мысалы, ондық бөлшек түрінде берілген кез келген бөлшек санды алайық: 25,076 = 2*10 + 5 +0*0,1 + 7*0,01 +6*0,001 Осылайша, 25,076 бөлшек санында 2 ондық, 5 бірлік, 0 ондық бар екенін анықтаймыз. , 7 жүздік және 6 мыңдық. Ондық жүйе 10 цифрды және 10 орынның еселігін пайдаланады - осыдан «ондық» атауы бар. 1.2 Екілік санау жүйесі – қазіргі барлық дерлік компьютерлерде және басқа есептеуіш электрондық құрылғыларда қолданылатын санау жүйесі. Сандарды жазу үшін ол тек екі цифрды пайдаланады - 0 және 1. Санның қай санау жүйесінде жазылғанын шатастырмау үшін оның төменгі оң жағында көрсеткіш (ол санау жүйесінің негізі болып табылады ) берілген. мысал: 1000₁₀ 1000₂ Мұндағы бірінші сан ондық жүйеде таныс мың , ал төменгісі екілік жүйедегі сан және ондық жүйеде тең... 8 ! Ондық жүйе сияқты екілік жүйе де сандарды цифрларға бөледі . Екілік санның әрбір цифры бит (немесе цифр ) деп аталады. (Егер біреуді қызықтырса, төрт бит - ниббл (немесе тетрад), 8 бит - byte , 16 бит - сөз , 32 бит - қос сөз ). Биттер (цифрлар) да нөлден бастап оңнан солға қарай нөмірленеді (ондық жүйеге қарағанда). Ең аз маңызды, ең аз маңызды, оң жақ биттің реттік нөмірі 0 болады . Одан әрі бірінші бит, екіншісі және т.б., бит неғұрлым үлкен болса , соғұрлым маңыздырақ болады (ондық жүйеге ұқсастық бойынша біз түсінеміз - егер сіз 1455 санынан бірлерді алып тастасаңыз, сізде 1450 саны қалады. - бастапқыға тең дерлік.Бірақ жүздіктерді алып тастасаңыз, сізде 1050 саны қалады, бұл бастапқы мәннен әлдеқашан алыс, себебі жүздіктер бірлік орнына қарағанда әлдеқайда маңыздырақ (жоғары ретті) ). Мысал. ӘЛІ ОҚЫМАЙДЫ :))) Компьютер жадындағы нақты сандар.  ДАМЫТУДА!!!  - 2 Төменгі жағында бұл бөлшек екілік санның биттері қызыл түспен нөмірленген - барлығы бізде бұл санның 18 биті (цифры) бар. Болашаққа қарап, бөлшек сандар компьютер жадында мүлдем басқа жолмен сақталатынын атап өткім келеді - бұл кейінірек талқыланады. Осы арада сандарды бір санау жүйесінен екіншісіне түрлендіруді үйренейік. 2. Бүтін және бөлшектерді ондық жүйеден екілік жүйеге және керісінше түрлендіру. 2.1 Ондық санаудан екілік санау жүйесіне ауыстыру. 2.1.1 Бүтін сандар. Бүтін ондық санды екілік санау жүйесіне ауыстыру үшін бұл санды 2-ге бөлу керек, бөлудің қалған бөлігін жазу керек (санның жұп немесе тақ болуына байланысты ол әрқашан 0 немесе 1-ге тең болады) , және бөлу нәтижесін қайтадан 2-ге бөліңіз, бөлудің қалған бөлігін (0 немесе 1) қайтадан жазыңыз және екінші бөлімнен алынған нәтижені қайтадан 2-ге бөліңіз.Бөлудің нәтижесі бірге тең болғанша осы жолмен жалғастырыңыз. Әрі қарай, біз әрқашан 1-ге тең болатын ең соңғы бөлу нәтижесінен бастап барлық алынған нөлдер мен бірліктерді кері ретпен жазамыз . КЕЗ КЕЛГЕН БҮТІН САНДЫ 2-ге ретімен бөлудің соңғы нәтижесі әрқашан бір (1) болады! Нәтиже 1-ден үлкен болса, нәтиже ретінде біреуін алғанша бұл нәтижені 2-ге бөлуді жалғастырамыз. Ал 2-ге бөлудің нәтижесі тек бір жағдайда ғана нөл (0) болуы мүмкін – бұл нөлдің өзін 2-ге бөлу. Мысал. 145 санын ондық жүйеден екілік санау жүйесіне ауыстырайық . 145/2 = 72 (қалған 1 ) 72/2 = 36 (қалған 0 ) 36/2 = 18 (қалған 0 ) 18/2 = 9 (қалған 0 ) 9/2 = 4 (қалған 1 ) 4/2 = 2 (қалған 0 ) 2/2 = 1 (қалған 0 ) Енді екілік санымызды кері ретпен «жинақтаймыз» . Біз 10010001 нөмірін аламыз . Орындалды! Қызықты нюанс 1. 1 санын ондық жүйеден екілік санау жүйесіне ауыстырайық . Екілік жүйеде бұл сан да 1 болып жазылады. Өйткені, 1-ге тең болуы керек 2-ге бөлудің соңғы нәтижесі қазірдің өзінде 1 санының өзіне тең 1₁₀ = 1₂ Қызықты нюанс 2. Түрлендірейік. ондық жүйеден екілік санау жүйесіне 0 саны . Екілік жүйеде бұл сан 0 түрінде де жазылады. 0₁₀ = 0₂ 2.1.2 Бөлшек сандар. Бөлшек сандарды екілік сандарға қалай түрлендіруге болады? Ондық бөлшекті екілік санау жүйесіне ауыстыру үшін мыналар қажет: а) 2.1.1-тармақта қарастырылған алгоритм бойынша бөлшектің бүтін бөлігін екілік жүйеге түрлендіру ә) бөлшектің бөлшек бөлігін 2-ге көбейту , жазу керек. ондық үтірдің АЛДЫНДАҒЫ нәтиженің нәтижелі цифры (әрдайым 0 немесе 1-ге тең, бұл логикалық), содан кейін алынған нәтиженің бөлшек бөлігін ТЕК 2-ге көбейтіңіз, ондық бөлшектің АЛДЫНДА (0 немесе 1) алынған нәтиженің цифрын жазыңыз және бөлшек болғанша жалғастырыңыз. көбейту нәтижесінің бір бөлігі 0-ге тең болады немесе ондық таңбалардың қажетті санына дейін (қажетті дәлдік ) (2-ге көбейту санына тең). Содан кейін нақты (бөлшек) санның бүтін және бөлшек бөліктерін бөлетін нүктеден кейін жазылған нөлдер мен бірлердің алынған тізбегін ТӘРТІПпен жазу керек . Мысал 1. 2,25 санын (2 нүкте 25 жүздік) ондық жүйеден екілік жүйеге ауыстырайық . Екілік жүйеде бөлшек 10,01- ге тең болады . Біз мұны қалай алдық? Сан бүтін бөліктен (нүктеге дейін) тұрады - бұл 2 және бөлшек бөлік - бұл 0,25. 1) Бүкіл бөліктің аудармасы: 2/2 = 1 (қалған 0 ) Бүкіл бөлік 10 болады . 2) Бөлшек бөлшектің аудармасы. 0,25 * 2 = 0 ,5 (0) 0,5 * 2 = 1 ,0 (1) 2-ге кезекті көбейту нәтижесінде бөлшек бөлігі 0-ге тең болды. Көбейтуді тоқтатамыз. Енді біз бөлшек бөлігін РЕТІМЕН «жинақтаймыз» - екілік жүйеде 0,01 аламыз . 3) Бүтін және бөлшек бөліктерін қосыңыз - біз ондық бөлшек 2.25 екілік бөлшек 10.01 тең болатынын аламыз . Мысал 2. 0,116 санын ондық жүйеден екілік жүйеге ауыстырайық . 0,116 * 2 = 0,232 (0) 0,232 * 2 = 0,464 (0) 0,464 * 2 = 0,928 (0) 0,928 * 2 = 1,856 (1) //осы нәтиженің бүтін бөлігін алып тастаңыз 0,856 * 1 = 2 . ) //осы нәтиженің барлық бөлігін алып тастау 0,712 * 2 = 1 , 424 (1) //осы нәтиженің барлық бөлігін алып тастау 0,424 * 2 = 0 , 848 (0) Көріп отырғанымыздай, көбейту жалғасады. , нәтиженің бөлшек бөлігі 0-ге тең болмайды. Содан кейін біз ондық бөлшекті нүктеден кейін (бөлшек бөлігінде) 7 ондық таңба (бит) дәлдікпен екілік бөлшекке айналдырамыз деп шешеміз. Елеусіз биттер туралы не зерттегенімізді еске түсірейік - бит (бит) бүтін бөліктен неғұрлым алыс болса, соғұрлым оны елемеу оңайырақ болады (дәрістің 1-бөліміндегі түсініктеме, кім ұмытты). Нүктеден кейін 7 бит дәлдікпен 0,0001110 екілік бөлшекті аламыз . 2.2 Екілік жүйеден ондық санау жүйесіне ауыстыру. 2.2.1 Бүтін сандар. Толық аудару үшінсанды екілік санау жүйесінен ондық санау жүйесіне ауыстыру үшін бұл санды цифрларға (разрядтарға) бөлу және әрбір цифрды (битті) 2 санына белгілі бір оң дәрежеге көбейту керек (бұл дәреже оңнан солға қарай ең аз мәндіден санауды бастайды. (оң жақ бит) және 0-ден басталады ) . Басқаша айтқанда, екінің дәрежесі берілген биттің санына тең (бірақ бұл жазылмаған ереже бүтін сандарды түрлендіру жағдайында ғана қолданылуы мүмкін , өйткені бөлшек сандар үшін биттерді нөмірлеу аударылатын бөлшек бөліктен басталады. ондық жүйеге басқаша ). Содан кейін алынған өнімдерді қосу керек . Мысал. 110011 екілік санын ондық санау жүйесіне ауыстырайық . 110011₂ = 1*2⁵ + 1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º = 32 +16 +0 + 0 + 2 + 1 = 51₁₀ Нәтижесінде біз 51 санын аламыз екілік жүйе. Ақпарат үшін төменде 2 санының бірінші дәрежелерінің кестесі берілген . ӘЛІ ОҚЫМАЙДЫ :))) Компьютер жадындағы нақты сандар.  ДАМЫТУДА!!!  - 5 ! Санның нөлдік дәрежесі әрқашан 1 болатынын ескеріңіз . 2.2.2 Бөлшек сандар. Екілік бөлшек (нақты) санды ондық санау жүйесіне түрлендіру үшін : а) 2.2.1-тармақтағы алгоритм бойынша оның бүтін бөлігін ондық бөлшекке түрлендіру ; б) оның бөлшек бөлігін былай аударыңыз . Бөлшек бөлігін белгілі бір теріс дәрежеге дейін көтерілген екі цифрдың көбейтіндісінің қосындысы ретінде көрсету керек ( нүктеден кейінгі бірінші цифрдың күші (бөлшектің барлық бөлігінен кейін) -1-ге тең болады, нүктеден кейінгі екінші цифр үшін -2-ге тең болады және т.б.) Нәтиже бұл сома ондық жүйедегі санның бөлшек бөлігі болады. Мысал. 10111.01 санын екілік жүйеге ауыстырайық . 10111.01₂ = (1*2⁴ + 0*2³ + 0*2² + 1*2¹ + 1*2º) . (0*2ˉ¹ + 1*2ˉ²) = (16 + 0 + 4 + 2 + 1) . (0 + 0,25) = 23,25₁₀ Нәтижесінде ондық санау жүйесінде 23,25 санын аламыз. Төменде 2-нің бірінші теріс дәрежесінің кестесі берілген. 2.2.3 Сандарды екілік жүйеден ондық жүйеге ауыстырудың жалпы формуласы. Сандарды екілік жүйеден ондық жүйеге ауыстырудың жалпы формуласын келтірейік (бүтін және бөлшек бөліктері). мұндағы А – екілік санау жүйесіндегі сан; Санау жүйесінің негізі 2 (мағынасы, әрбір бит 2-ге көбейтілген дәрежеге дейін); nӘЛІ ОҚЫМАЙДЫ :))) Компьютер жадындағы нақты сандар.  ДАМЫТУДА!!!  - 7 ӘЛІ ОҚЫМАЙДЫ :))) Компьютер жадындағы нақты сандар.  ДАМЫТУДА!!!  - 4— бүтін цифрлар саны (бит) ; m - санның бөлшек цифрларының (биттерінің) саны . Бөлу нүктесінен бүтін бөліктің бірінші биті қызыл түспен белгіленген . Ол әрқашан 2-ге көбейтіліп, нөлдік дәрежеге келтіріледі. Оның алдындағы келесі бит (солға) бірінші дәрежеге 2-ге көбейтіледі және т.б. Бөлу нүктесінен бөлшек бөлігінің бірінші биті жасыл түспен белгіленген . Ол әрқашан минус бірінші дәрежеге 2-ге көбейтіледі. Оң жақтағы келесі бит 2-ге минус секундтық дәрежеге көбейтіледі және т.б. 3. Ғылыми белгі: екі жүйеде де нормаланған белгі. Мантисса, көрсеткіш, дәреже дәрежесі. 3.1 Санды жазудың көрсеткіштік түрі. Бұрын біз позициялық сандарды цифрмен жазудың егжей-тегжейлі схемасын зерттедік . 0,00000000000000000000016 санын алайық . Оның стандартты пішінде өте ұзақ жазбасы бар . Ал экспоненциалды түрде ол келесідей болады: 1,6 * 10ˉ²¹ Сонымен санның көрсеткіштік түрі дегеніміз не және санды осы пішінде қалай көрсету керек? Санның ғылыми белгіленуі нақты сандарды мантисса және көрсеткіш ретінде көрсету болып табылады . Өте үлкен және өте аз сандарды көрсетуге, сондай-ақ олардың жазылуын біріктіруге ыңғайлы. N = M * pⁿ мұндағы N – жазылатын сан, M – санның мантиссасы , p – негізі (берілген санның санау жүйесінің негізіне тең), n (бүтін) – реті (дәрежесі). , оң және теріс болуы мүмкін), n дәрежесіне p - сипаттамалық сандар (көрсеткіш, яғни дәрежеге (ретке) көтерілген база). Маңызды нюанс. Егер ондық санның бүтін бөлігі 0-ден өзгеше болса , онда дәреженің реті (дәрежесі) оң болады , бүтін бөлігі 0-ге тең болса , дәреже дәрежесі теріс болады . 3.2 Сандарды жазудың қалыпты және нормаланған түрі. Санның қалыпты түрі — мантисса (белгіні есепке алмағанда) жарты интервалда [0,1] орналасқан пішін, яғни 0 <= M < 1. Жазудың бұл формасы бар. кемшілігі : кейбір сандар анық емес жазылады (мысалы, 0,0001 0,000001*10², 0,00001⋅10¹, 0,0001⋅10º, 0,001⋅10ˉ¹ және т.б. түрінде жазуға болады). Сондықтан жазудың тағы бір түрі кең тараған (әсіресе информатикада) – нормаланған, онда ондық санның мантиссасы 1-ден (қоса алғанда) 10-ға (ерекше) дейінгі мәндерді қабылдайды, яғни 1 <= M < 10 (сол сияқты екілік санның мантиссасы 1-ден 2-ге дейінгі мәндерді қабылдайды. ). Басқаша айтқанда, ондық жүйедегі мантисса 1,0-ден (қоса алғанда) 10-ға дейін (ерекше) бөлшек сан болуы керек , яғни. мантиссаның бүтін бөлігінде бір цифр болуы керек, ал бөлшек бөлігі математикалық тұрғыдан шектелмейді. Нормаланған форманың артықшылығы мынада, осылайша кез келген сан (0-ден басқа) бірегей түрде жазылады. Кемшілігі 0-ді бұл формада көрсету мүмкін емес, сондықтан информатикада сандарды көрсету 0 санына арнайы белгі (бит) береді. 3.3 Ондық сандарды экспоненциалды нормаланған түрде жазу мысалдары. Мысалдарды қарастырайық . Мысал 1. 1015000 (бір миллион он бес мың) ондық санын экспоненциалды нормаланған түрде жазайық . Бұл санның санау жүйесі ондық, сондықтан негізі 10 болады . Мантиссаны таңдайық . Ол үшін санды бөлшек ретінде елестетіңіз, оның бөлшек бөлігі нөлге тең болады (сан бүтін сан болғандықтан): 1000000.0. Егер санның бүтін бөлігі 0 -ден үлкен болса , онда бүтін бөлікте бір ғана цифр қалғанша нүктені бастапқы орнының сол жағына (бүтін бөліктің ішінде) жылжытыңыз . Одан кейін нүкте қоямыз. Біз елеусіз нөлдерді (санның соңында) тастаймыз. Біз 1,015- ке тең санның мантиссасын аламыз . Сан негізінің дәрежесін (ретін) анықтайық . Бүтін және бөлшек бөлшектерді бөлетін нүктеміз солға неше позицияға жылжыды? Алты позиция үшін. Бұл тапсырыс 6 болатынын білдіреді . Бұл жағдайда реттілік оң болады (біз 0-ге тең емес санның бүтін бөлігіндегі нүктені жылжыттық). Нормаланған түрдегі соңғы жазба: 1,015 * 10⁶ . Бұл санды мына түрде жаза аламыз: 1.015E6 (мұндағы E6 ондық санның көрсеткіші , яғни 10-нан 6-шы дәрежеге дейін). Өзімізді сынап көрейік . Санның көрсеткіштік белгісі сан (мантисса) мен басқа санның (көрсеткіш) көбейтіндісі ғана емес. 1,015-ті 10⁶-ке көбейтсеңіз не болады? 1,015*10⁶ = 1,015*1000000 = 1015000 . Барлығы дұрыс. Бұл тәсіл (қалыпты) бір мәнді жазба жасауға көмектеседі жоғарыда көрсетілгендей экспоненциалды түрде сандар. Мысал 2. 0,0098 ондық нақты санын нормаланған түрде жазайық . Санның негізін ерекшелеп көрейік – ол 10- ға тең (ондық санау жүйесі). Санның мантиссасын таңдайық - ол 9,8- ге тең (санның бүтін бөлігі нөлге тең, яғни біз нүктені оңға бірінші маңызды цифрға жылжытамыз (1-ден 9-ға дейінгі аралықта жатыр)) .Санның ретін анықтаймыз – нүктені үш орынға жылжыттық, яғни реті 3. Оң ба теріс пе, теріс пе?Нүкені оңға жылжытқандықтан (санның бөлшек бөлігінде), реті (қуаты) теріс болады . Нормаланған түрдегі санның соңғы жазбасы 9,8 * 10ˉ³ немесе 9,8E-3 . Өзімізді тағы тексеріп көрейік. 9,8-ді 10ˉ³-ге көбейтіңіз. 9,8 * 10ˉ³ = 9,8 * 0,001 = 0,0098 дұрыс. Мысал 3. Ондық нақты сан 3,56 нормаланған түрде жазайық.Санның негізін таңдаңыз – ол 10- ға тең (ондық санау жүйесі).Санның мантисасын таңдаңыз – ол... тең 3,56 (бүтін сан) санның бөлігі бір таңбалы, 0-ге тең емес. Бұл нүктені ешқайда жылжытудың қажеті жоқ, санның өзі мантисса болады дегенді білдіреді.) Негіздің орналасу ретін ерекшелеп көрейік: Мантисса қандай санмен жазылуы керек. , санның өзіне тең, өзгермейтіндей етіп көбейту керек пе? Бірлік үшін. Бұл тапсырыс нөлге тең болады дегенді білдіреді. Нормаланған түрдегі санның соңғы жазбасы 3,56 * 10º немесе 3,56E0. 4. Нақты сандарды компьютер жадында сақтау: float және double. 4.1 Float және double түрлері. Дәрісіміздің негізгі бөліміне көшейік. Біз білетіндей, Java тілінде нақты сандардың екі түрі бар: float және double . Қалқымалы тип компьютер жадында 32 бит алады және [3.4E-38; 3.4E+38) (басқа сөзбен айтқанда, 3.4*10ˉ³⁸ (қоса алғанда) бастап 3.4 * 10³⁸ (қосылмаған) диапазонында). Маңызды нюанс 1. Қалқымалы сандар оң немесе теріс болуы мүмкін. Жоғарыдағы бұл ауқым қалқымалы диапазонға енгізілген сандардың модульдерін көрсету үшін берілген. Маңызды нюанс 2. 10³⁸ шамамен 2¹²⁷ тең , сәйкесінше 10 ˉ³⁸ шамамен 2ˉ¹²⁷ тең . Осылайша, өзгермелі сандардың абсолютті мәндерінің аралығын [3,4 * 2ˉ¹²⁷ ретінде жазуға болады; 3,4 * 2¹²⁷). Қос түрі компьютер жадын екі есе көп алады -64 бит және [-1,7E+308 диапазонындағы ондық мәндерді қабылдай алады ; 1.7E+308) тиісінше. 4.2 Екілік сандардың экспоненциалды нормаланған түрі. Сандардың компьютер жадында екілік түрде сақталатынын білеміз. Сонымен, 1560.256 санын (флоат түрі) алып , оны екілік жүйеге позициялық түрде түрлендірейік: 11000011000.01000001100 . Компьютер жадында осылай сақталады деп ойлайтын шығарсыз. Бірақ бұл олай емес! Компьютер жадында қалқымалы және қосарлы типтер ( нақты өзгермелі нүкте түрлері ) экспоненциалды нормаланған түрде сақталады , бірақ қуат негізі 10 орнына 2. Бұл жоғарыда айтылғандай, барлық деректерге байланысты. компьютер екілік формада (бит) берілген. Нөмірге компьютер жадының белгілі бір көлемі бөлінеді. 15,2 оң санын нормаланған экспоненциалды түрде көрсетейік : 1,52*10¹ . Әрі қарай, оның екілік «егізі» 1111.00110011001 -ді де сол алгоритмді қолданып, экспоненциалды нормаланған белгілеуде көрсетейік : 1) Негіз 2-ге тең болады 2) Мантисса 1,11100110011001-ге тең болады 3) Дәреже оң және 3-ке тең болады. (нүкте 3 бит солға жылжытылады) ондық жүйеде. Оны екілік жүйеге ауыстырайық: 11 . Сонымен, екілік экспоненциалды нормаланған түрде ол 1,11100110011001 * 2¹¹ болады. 4.3 Компьютер жадында қалқымалы санның экспоненциалды нормаланған екілік түрін сақтау . Сонымен, біз нақты санның компьютер жадында экспоненциалды нормаланған екілік формада сақталатынын анықтадық . Ол жадта қалай көрінеді? Қалқымалы түрін алайық . Компьютер әрбір қалқымалы сан үшін 32 бит бөледі . Олар келесідей бөлінеді . Бұл суретте компьютердегі 32-биттік флот саны үшін бөлінген жад схемалық түрде көрсетілген. ӘЛІ ОҚЫМАЙДЫ :))) Компьютер жадындағы нақты сандар.  ДАМЫТУДА!!!  - 5 Битті нөмірлеу қызыл түспен көрсетілген . Жасыл санның белгісін сақтауға арналған бөлінген жад бөлігін (1 бит) көрсетеді. Сары санның экспоненциалды түрінің (8 бит) ауысқан қуатын (тәртібін) сақтауға арналған бөлінген жад бөлігін көрсетеді. Көкжасырын бірлігі жоқ (23 бит) санның нормаланған мантиссасын сақтауға арналған бөлінген жад бөлігін білдіреді. Толығырақ қарастырайық. 1) Белгі биті. Ең маңызды (сол жақтан бірінші) бит әрқашан санның белгісін сақтау үшін бөлінеді (сан теріс болса 1, ал оң болса 0). Ерекшелік бағдарламалаудағы нөл саны болуы мүмкін, нөл теріс және оң болуы мүмкін . 2) Одан кейін 2 негізі бар дәреженің (ретінің) разрядтары келеді . Ол үшін 8 бит бөлінген. Қалқымалы сандардың көрсеткіш дәрежесі , біз білетініміздей, теріс (бүтін бөлігі 0 болатын сандар үшін, 3.3-тармақты қараңыз) және оң (бүтін бөлігі нөлден өзгеше сандар үшін) болуы мүмкін және 2ˉ¹²⁷ мен 2¹²⁷ аралығында болуы мүмкін . Теориялық тұрғыдан, көрсеткіш биті сияқты көрсеткіштің таңбасын анықтау үшін бір бит бөлу керек. Бірақ бұл олай емес. Көрсеткіштің таңбасын анықтауға аз уақыт жұмсамау үшін өзгермелі сандар +127 (0111 1111) жарты byte көрсеткішіне ығысуды қосады . Осылайша, 2ˉ¹²⁷-ден 2¹²⁷-ге дейінгі қуат диапазонының орнына компьютер 0-ден +254-ке дейінгі қуат диапазонын сақтайды - барлық қуат мәндері оң , белгіге қосымша byteты ысырап етудің қажеті жоқ. Көрсеткіштің мәні мүмкін мәнге қатысты жартысына ығысады . Бұл көрсеткіштің нақты мәнін алу үшін жадта сақталған мәннен осы ығысуды алып тастау керек дегенді білдіреді. Жадта сақталған көрсеткіш мәні ығысудан (+127) аз болса, онда көрсеткіш теріс болады: бұл логикалық. Мысал. Теріс дәрежелі ығысуды орындаймыз -18 . Біз оған +127 ығысуын қосамыз, біз +108 дәрежесінің мәнін аламыз (есептеу кезінде 0 дәрежесін ұмытпаңыз). Дәрежені екілік түрге түрлендірейік: 1101100 Бірақ дәрежеге 8 бит жады бөлінген, ал мұнда біз 7 разрядты сан аламыз. Бос, бос жоғары цифрдың (бит) орнына компьютер 0 қосады. Нәтижесінде бұл дәреже компьютер жадында 01101100 түрінде сақталады . Көрейік: +108 < +127, яғни дәреже шын мәнінде теріс. Келесі қызықты кестені қарастырыңыз: Ол екілік және ондық жүйелердегі қалқымалы сандардың нормаланған түрлерінің қуаттарының барлық мүмкін мәндерін көрсетеді. Көріп отырғанымыздай, екілік жүйеде +127 толық byteтың (8 бит) дәл жартысы. 3) Қалған 23 бит мантисса үшін сақталған ӘЛІ ОҚЫМАЙДЫ :))) Компьютер жадындағы нақты сандар.  ДАМЫТУДА!!!  - он бір. Бірақ нормаланған екілік мантисса үшін ең маңызды бит (нормаланған мантиссаның бүтін бөлігі) әрқашан 1-ге тең ( жасырын бір деп аталады ), өйткені мантисса саны 1<=M<2 (және сонымен қатар дәрістің 2.1.1 тармағын еске түсіріңіз). Жалғыз ерекшелік - 0 саны. Бөлінген 23 битке бірлікті жазып, жадты босқа жұмсаудың қажеті жоқ, сондықтан мантиссаның қалған бөлігі (оның бөлшек бөлігі) бөлінген 23 битке жазылады. Негізінде қалқымалы санның маңызды бөлігінің ұзындығы 24-ке тең, оның ішінде бір бит аз сақталады. Маңызды нюанс. Ондық бөлшек сандарды екілік сандарға түрлендіру кезінде екілік жүйедегі бөлшек бөлігі жиі үлкен болып шығатынын еске түсірейік. Бізде өзгермелі санды сақтау үшін тек 32 бит бар. Бұл жағдайда екілік бөлшектің ең төменгі, ең аз мәнді сандары (осы дәрістің 2.1.2-тармағын есте сақтаңыз) бөлінген жадқа қосылмайды және компьютер оларды елемейді . Нөмірдің дәлдігі жоғалады , бірақ, көріп тұрсыз, бұл өте аз. Басқаша айтқанда, бөлшек флоаттардың дәлдігі 6-7 ондық таңбаны құрайды . 4.4 Екі еселік санның экспоненциалды нормаланған екілік түрін компьютер жадында сақтау. Double типті нақты сандар компьютер жадында қалқымалы сандар сияқты , кейбір сипаттамаларды қоспағанда сақталады. Қос санның компьютер жадында 64 бит бар. Олар келесідей бөлінеді (сонымен қатар солдан оңға қарай ретімен): 1) Белгі биті (4.3-тармақты қараңыз). Бұл биттің саны 63 болатынын түсінеміз . 2) Дәреже (рет). Қос сандар оны сақтау үшін 11 бит бөлінеді . Дәрежелік ауысым да жүзеге асырылады , бірақ қос сандар үшін ол +1023-ке тең болады . 3) Мантисса (маңызды бөлігі). Қос сандар оны сақтау үшін 52 бит (цифр) бөлінген . Сондай-ақ, мантиссаның нақты бүтін бөлігі ( жасырын бірлік ) жадта сақталмайды . Сондай-ақ, бөлшек қосылымдарының дәлдігі шамамен 16 ондық таңбаны құрайтынын атап өткен жөн . 4.5 Ондық жүйенің нақты санын компьютер жадында бейнелеу мысалдары. Ал біздің дәрісіміздің қорытынды нүктесі тақырыпты түсінуді бекіту үшін ондық санау жүйесінің бөлшек санын оның компьютер жадында сақтау формасына түрлендірудің мысалы болмақ. Мысал 1. Санды алыңыз-4,25 қалқымалы түрі. Оны екілік санау жүйесінде экспоненциалды нормаланған түрде көрсетейік, осы лекцияда қарастырғандардың барлығын еске түсірейік. 1) Санның бүтін бөлігін екілік түрге түрлендіру : 4/2 = 2 ( 0 бөліндінің қалдығы ) 2/2 = 1 ( 0 бөліндісінің қалдығы ) Бүтін бөлігі екілік жүйеде 100 -ге тең болады . 2) Санның бөлшек бөлігін екілік санға түрлендіру . 0,25*2 = 0,5 ( 0 ) 0,5*2 = 1,0 ( 1 ) Бөлшек бөлігі екілік жүйеде 0,01- ге тең болады . 3) Осылайша, -4,25₁₀ = -100,01₂ . 4) Екілік санау жүйесінде -100,01₂ санын экспоненциалды нормаланған түрге айналдырайық (бұл дәреженің негізі 2 болады). -100,01₂ = -1,0001 *2² Дәреженің мәнін ондық форматтан екілік санау жүйесіне түрлендірейік . 2/2= 1 (қалған 0 ) Дәрежесі 10₂. Оның екілік экспоненциалды нормаланған түрінде -4,25₁₀ саны -1,0001 * 2¹º тең болатынын білеміз, оның компьютер жадында қалай көрінетінін жазып көрейік . Белгі биті 1 (теріс сан) болады . Көрсеткіштің ығысуы 2+127 = 129₁₀ = 10000001₂ Мантиссадан жасырынды алып тастаймыз , біз 00010000000000000000000 аламыз ( бос орынсыз төменгі нөлдік биттерді толтырамыз ). Төменгі сызық. 1 10000001 00010000000000000000000 - компьютер жадында -4,25 саны осылай сақталады. Мысал 2. 0,75₁₀ қалқымалы санын компьютер жадындағы екілік жады пішіміне түрлендіру . Нәтиже 0 01111110 100000000000000000000000 болуы керек . Назар аударғаныңызға рақмет.
Пікірлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION