码迷,mamicode.com
首页 > 编程语言 > 详细

计算机体系、语言的基础认识

时间:2018-03-25 12:02:09      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:结果   asc   进制   增加   gpo   没有   输出   隐式   提高   

冯诺依曼体系:
I/O:输入设备与输出设备
CPU:
            运算器:计算数据
            控制器:控制程序的运行
            CPU还有寄存器与多级缓存
存储器:磁盘(外存);内存(快):掉电即失
所有数据从磁盘到内存再到CPU
数据从内存先到寄存器再被CPU使用
 
计算机语言:
编译语言:源代码经本地编译后装还成目标机器的CPU指令
解释语言:源代码经解释器(Cpython、Ipython、pypi等)解释为字节码(bytecode),运行在虚拟机上,虚拟机将字节码转换为物理CPU识别的指令去运行(python,java输入解释型语言)
动态语言:变量类型不需要事先声明,可随时赋值为其他类型(python)
静态语言:变量类型需要事先声明,且不可更改(java、c++、c#等)
强类型语言:不同类型之间不可操作,必须转换成同一类型(没有隐式转换,python,java等)
弱类型语言:不同类型之间可以操作,自动隐式转换(javascript)
python是解释型动态强类型语言
 
python是有垃圾回收GC机制的,引用计数增加与减少,引用计数减少到0时会被GC捕获,在适当的时候进行垃圾回收
 
源码、反码和补码:
数据在计算机是以二进制形式存在的,计算机计算数据(加法)时用补码来运算
正数的源码、反码和补码相同
负数:
        源码转化为补码:符号位不变其余按位取反后加1
        补码的补码为源码
例子:1-2(等同于-2+1,计算机不会减法)
       1、先取-2与1的补码,-2补码为:1110;1的补码为:0001
       2、两个补码相加为:1111
       3、因1111为补码,所以需要将其转换成源码,而补码的补码为源码
       4、将1111符号位不变其余按位取反后加1后为:1001
       5、所以最终运算结果为1001(源码),转换为十进制即为-1
 
 
位运算符(二进制运算,负数需要先将其转换为补码再进行位运算):
&:按位与;都为1时为1(以正整数为例:1010&1100为1000)
|:按位或;有一个为1即为1(以正整数为例:1010|1100为1110)
~:按位取反:需要先将整数转换为补码后在取反;例子:~12
                     1、0000 1100(12的补码)
                     2、1111  0011 (取反后为补码,下一步将补码转换成源码)
                     3、1000 1101  (符号位不变,其余按位取反后加1即为源码)
                     4、转换为十进制即为-13
^:异或:按位相同为0,不同为1
<<:按位左移
>>:按位右移                    
运用位运算符是提高效率的方法。熟练使用位运算符

计算机体系、语言的基础认识

标签:结果   asc   进制   增加   gpo   没有   输出   隐式   提高   

原文地址:https://www.cnblogs.com/byy18/p/8643262.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!