1.pythonä¸intå¤å°ä½ï¼
pythonä¸intå¤å°ä½ï¼
导读ï¼æ¬ç¯æç« é¦å¸CTOç¬è®°æ¥ç»å¤§å®¶ä»ç»æå ³pythonä¸intå¤å°ä½çç¸å ³å 容ï¼å¸æ对大家ææ帮å©ï¼ä¸èµ·æ¥ççå§ãpythonä¸intæ¯ä»ä¹ææintå¨pythonéæ¯ä¸ä¸ªç±»ï¼å®æ¯ä¸å¯åæ°æ®ç±»åä¸çä¸ç§ï¼å®çä¸äºæ§è´¨åå符串æ¯ä¸æ ·çï¼æ¯æ´åã
âPythonintæ°åç±»åï¼æ´åintãé¿æ´åãå¸å°åboolãæµ®ç¹æ°floatãå¤æ°complexã
âæ´åintçå建ï¼å建ä¸ä¸ªæ°æ´ååéåç»åéèµå¼æ¯ç¸åçè¿ç¨ã
âæ´åçç¹ç¹ï¼æ¢ç¶æ¯æ´åèªç¶èµå¼æ¶åçæ°æ®è¦æ¯æ´æ°æè¡ï¼æ´æ°ç®åç解为(æ£æ´æ°åè´æ´æ°)ã
âæ´ååéé´çè¿ç®æä½ç¬¦åæ¹æ³ï¼pythonç®åå¯ä»¥æ¯æçæ´åæ°æ®ç±»ååéåçæä½ç¬¦æå (ï¼)ãå(ï¼)ãä¹(*)ãé¤(ï¼)åå¹(**)ã
Pythonç®ä»ï¼
Pythonæ¯çº¯ç²¹çèªç±è½¯ä»¶ï¼æºä»£ç å解éå¨CPythonéµå¾ªGPL(GNUGeneralPublicLicense)åè®®ï¼Pythonè¯æ³ç®æ´æ¸ æ°ï¼ç¹è²ä¹ä¸æ¯å¼ºå¶ç¨ç©ºç½ç¬¦(whitespace)ä½ä¸ºè¯å¥ç¼©è¿ã
pythonéï¼int('1'*,源码笔记自慰源码2)æ¯ä»ä¹ææï¼
intå½æ°çå«ä¹å¾å®¹ææ¾ï¼è'1'*çæææ¯ä¸ª1ï¼2表示äºè¿å¶ãè¿ä¸ªæ¯æ...(个ï¼ç±2è¿å¶è½¬å为åè¿å¶ï¼ç¸å½äº1+2+4+8+...+2^ãçè¯æ¯å 为startåæ°é»è®¤ä¸º0ï¼ç¬¬ä¸ªå°±æ¯äºã
pythonï¼intç±»åä½å®½ä½ ç解éäºã
pythonçintå¯ä»¥æ é大çï¼åå¶äºä½ çå åï¼ï¼ä½ ç»å®èµå¼ä¸ä¸ªä½çæ´æ°ççã
pythonè¯è¨ä¸,表达å¼int(-4.3)çå¼æ¯ï¼ç»ææ¯?-4
对æ£æ°æ¯åä¸åæ´ï¼å¯¹è´æ°æ¯åä¸åæ´ã
å¦pythonçä¸ä¸ªç¼ºç¹å°±æ¯å¯¹æ°æ®ç±»åçåºç¡ç解æ¯è¾å°ï¼
ä½ å¯ä»¥ç¨äºè¿å¶æ¥ç解ä¸ï¼ä¸¾ä¸ä¸ªæ符å·çäºè¿å¶ä¸ºä¾åï¼
对äºæ 符å·ç?0b~0b?æ¥è¯´åå«æ
0b?=?0;
0b?=?1;
0b?=?2;
0b?=?3;
0b?=?4;
0b?=?5;
0b?=?6;
0b?=?7;
æ¯å¦?uint?å°±æ¯?int?çæ 符å·å½¢å¼ã
å½ç¸åæ°æ®ä¸ºæ符å·å½¢å¼æ¶å为ï¼
0b?=?0;
0b?=?1;
0b?=?2;
0b?=?3;
0b?=?-4;
0b?=?-3;
0b?=?-2;
0b?=?-1;
ï¼åèåç ãåç ãè¡¥ç ï¼
æä»¥æ ¹æ®è¿ä¸ªè§åï¼å¯¹floatï¼doubleçæ°åæ¯åçï¼å¨flooræ¶å°æ符å·ä½è¿è¡çç¥ï¼å¦ä»¥ä¸ä½è¿ç®ï¼ï¼ï¼
0b?=?0b
0b?=?0b
æ?0-0?å?1?-?0
0b?=?0b
0b?=?0b
æ?2-?1?å?3?-?1
æç §è¿ä¸ªä¸¢å¤±ç²¾åº¦çæ¹æ³è®¡ç®è´æ°å¢ï¼
0b?=?0b
0b?=?0b
0b?=?0b
0b?=?0b
å¯ç¥ï¼
-1?-?-1?�-2?-?-1
-3?-?-2?�-4?-?-2
æ以对è´æ°ç?floor?ä¼åä¸åæ´ï¼å 为丢失精度çæ¹æ³æ¯ç´æ¥æ ¹æ®å°æ°ç¹æªæçã
pythonæ¯å æ¯ç¹ï¼ä»¥python3çæ¬ä¸ºä¾è¯´æï¼intç±»åå¨pythonä¸æ¯å¨æé¿åº¦çãå 为python3ä¸intç±»åæ¯é¿æ´åï¼ç论æ¯æ大çæ°åï¼ä½å®çç»æå ¶å®ä¹å¾ç®å,å¨longintepr.hä¸å®ä¹ï¼
struct?_longobject?{
PyObject_VAR_HEAD
digit?ob_digit[1];
};
è¿ç»ææ¯ä»ä¹ææå¢ï¼éç¹å¨äºob_digitå®æ¯ä¸ä¸ªæ°ç»æéãdigitå¯è®¤ä¸ºæ¯intçå«åãpythonçæ´ååå¨æºå¶æ¯è¿æ ·çãæ¯æ¹è¦è¡¨ç¤ºä¸ä¸ªå¾å¤§çæ°:ãèæ¯ä¸ªå ç´ åªè½è¡¨ç¤º3ä½åè¿å¶æ°ï¼ä¸ºç解æçæ¯æ¹ï¼ãé£ä¹pythonå°±ä¼è¿æ ·åå¨ï¼
ob_digit[0]?=?
ob_digit[1]?=?
ob_digit[2]?=?
ä½ä½åäºä½ç´¢å¼ä¸ãpythonä¸æ´åç»æä¸çæ°ç»ï¼æ¯ä¸ªå ç´ åå¨ä½çäºè¿å¶æ°ï¼ä¸åä½æ°æä½ç³»ç»æå·®å¼ä½ç³»ç»åä½ï¼ä½ç³»ç»æ¯ä½ï¼ã
å æ¤ï¼sys.getsizeof(0)æ°ç»å ç´ ä¸º0ãæ¤æ¶å ç¨åèï¼PyObject_VAR_HEADç大å°ï¼ãsys.getsizeof()é使ç¨ä¸ä¸ªå ç´ ï¼å æ¤å¤äº4个åèã
pythonintå å 个åèãæ·±å ¥ç解计ç®æºç³»ç»ãè¿æ¬ä¹¦ä¸é¢æå°äºå¨ä½æºå¨åæºå¨ä¸intç±»åé½å ç¨4个åèããTheCProgramminglanguageãè¿æ¬ä¹¦ï¼éé¢æä¸å¥è¯æ¯è¿æ ·çï¼Eachcompilerisfreetochooseappropriatesizesforitsownhardware,subjectonlytotherestrictionthatshortsandintsareatleastbits,longsareatleastbits,andshortisnolongerthanint,whichisnolongerthanlong.ææ大è´æ¯ç¼è¯å¨å¯ä»¥æ ¹æ®èªèº«ç¡¬ä»¶æ¥éæ©åéç大å°ï¼ä½æ¯éè¦æ»¡è¶³çº¦æï¼shortåintåè³å°ä¸ºä½ï¼longåè³å°ä¸ºä½ï¼å¹¶ä¸shortåé¿åº¦ä¸è½è¶ è¿intåï¼èintåä¸è½è¶ è¿longåãè¿å³æ¯è¯´å个类åçåéé¿åº¦æ¯ç±ç¼è¯å¨æ¥å³å®çï¼èå½å主æµçç¼è¯å¨ä¸ä¸è¬æ¯ä½æºå¨åä½æºå¨ä¸intåé½æ¯4个åèï¼ä¾å¦ï¼GCCï¼ã
ç¸å ³æ¨èï¼ãPythonæç¨ã
ä¸é¢å举å¨GCCç¼è¯å¨ä¸ä½æºå¨åä½æºå¨å个类ååéæå åèæ°ï¼
éè¦è¯´æä¸ä¸çæ¯æéç±»ååå¨çæ¯ææååéçå°åï¼æ以ä½æºå¨åªéè¦bitï¼èä½æºå¨éè¦bitã
ç»è¯ï¼ä»¥ä¸å°±æ¯é¦å¸CTOç¬è®°ä¸ºå¤§å®¶ä»ç»çå ³äºpythonä¸intå¤å°ä½çå ¨é¨å 容äºï¼å¸æ对大家ææ帮å©ï¼å¦æä½ è¿æ³äºè§£æ´å¤è¿æ¹é¢çä¿¡æ¯ï¼è®°å¾æ¶èå ³æ³¨æ¬ç«ã