Wednesday, 6 September 2017

Binêre Opsies Python 2


Vrae: Wat doen die operateurs & lt; & lt ;, & gt; & gt ;, & amp ;, |, En ^ doen? Dit is bis operateurs Python se. Aanhef: Tweeën-Complement Nommers Al hierdie operateurs deel iets in gemeen - hulle is "bis" operateurs. Dit wil sê, hulle werk op getalle (gewoonlik), maar in plaas van die behandeling dat die getal asof dit 'n enkele waarde, hulle hanteer dit asof dit 'n string bisse, wat geskryf is in twees-aanvulling binêre. 'N twee aanvulling program is dieselfde as die klassieke binêre voorstelling vir positve heelgetalle maar is effens anders vir negatiewe getalle. Negatiewe getalle word verteenwoordig deur die uitvoering van die twee se komplement werking op hul absolute waarde. So 'n kort opsomming van twees-aanvulling program is ten einde: Complement binêre twee se positiewe heelgetalle: 0 word geskryf as "0" 1 word geskryf as "1" 2 word geskryf as "10" 3 is "11" 4 is "100" 5 is "101" . . 1029 is "10000000101" == 2 ** 10 + 2 ** 2 + 2 ** 0 == 1024 + 4 + 1 Complement binêre twee se negatiewe heelgetalle: Negatiewe getalle is geskrywe met 'n leidende een in plaas van 'n leidende nul. So as jy die gebruik van slegs 8 stukkies vir jou twee-twee-komplement getalle, dan patrone behandel soos jy uit "00000000" na "01111111", soos die heelgetalle 0-127, en reserwe "1xxxxxxx" vir die skryf van negatiewe nommers. 'N negatiewe getal, - x, is geskryf met behulp van die bispatrone vir (x-1) met al die stukkies aangevul (aangeskakel 1-0 of 0-1). So -1 is aanvul (1-1) = aanvulling (0) = "11111111", en -10 is komplement (10-1) = aanvulling (9) = aanvulling ( "00001001") = "11110110". Dit beteken dat negatiewe getalle gaan al die pad af na -128 ( "10000000"). Natuurlik beteken Python nie gebruik 8-bit getalle. Dit word gebruik om te gebruik egter baie stukkies was inheems aan jou rekenaar, maar omdat dit was nie-draagbare, het dit onlangs oorgeskakel na die gebruik van 'n oneindige aantal bisse. So het die getal -5 behandel deur bis operateurs asof dit geskryf is ". 1111111111111111111011". Sjoe! Met dit aanhef uit die weg geruim (en hey, waarskynlik geweet dat jy dit reeds), die operateurs is maklik om te verduidelik: Die operateurs: x & lt; & lt; y Opbrengste x met die stukkies na links geskuif word deur y plekke (en nuwe stukkies op die regterkantste-kant is nulle). Dit is dieselfde as vermenigvuldiging x deur 2 ** y. x & gt; & gt; y Opbrengste x met die stukkies verskuif na regs deur y plekke. Dit is dieselfde as // 'ing x deur 2 ** y. x & amp; y Is 'n "bis en". Elke bietjie van die produksie is 1 as die ooreenstemmende bietjie van x en y is 1, anders is dit 0. x | y Is 'n "bis of". Elke bietjie van die produksie is 0 as die ooreenstemmende bietjie van x en y is 0, anders is dit 1. x Returns die aanvulling van x - die nommer wat jy kry deur oor te skakel elke 1 vir 'n 0 en elke 0 vir 'n 1. Dit is dieselfde as - x - 1. x ^ y Is 'n "bis eksklusiewe of". Elke bietjie van die uitset is dieselfde as die ooreenstemmende bietjie in x as dit bietjie in y is 0, en dit is die aanvulling van die bietjie in x as dit bietjie in y is 1. Onthou net oor daardie oneindige reeks 1 stukkies in 'n negatiewe getal, en dit behoort alles sin maak. ander Klasse Nog 'n punt: Python toelaat operateur oorlading, so 'n paar klasse kan geskryf word om die bis-operateurs toelaat, maar met 'n paar ander betekenis. Byvoorbeeld, die nuwe stelle module vir Python 2.3 gebruik | en & amp; vir unie en kruising.

No comments:

Post a Comment