认识python和数据存储

  1. 为什么使用、发明计算机?开始为了存储、计算数据
  2. 数据存储在哪里? 内存
  3. 内存是什么?是与CPU沟通的桥梁;计算机中所有程序的运行都是在内存中进行的,因此内存的性能对计算机的影响非常大。
  4. 内存单位:虽然内存最小单位是字节,但数据存储在内存其中是二进制表现(0/1),称为1位1bit
    一个字节能表示的最大的整数就是255(二进制11111111=十进制255),0 - 255被用来表示大小写英文字母、数字和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122
    8bits = 1byte
    1024byte = 1KB
    1024KB = 1MB
    1024MB = 1G
    1024G = 1T
  5. 数据是如何存储在内存里的?
    首先开辟内存空间然后存储数据(二进制),再存储数据;开辟内存的最小单位是字节,在存储数据时用最高位表示符号,1负数表示/0表示正数
    如10怎么储存在内存里:10 需要4个字节,32bit,32位(不同编程语言所需不同);本只需要1个字节,用4个字节需要前面补0;
    0000000000000000000000000000000000000000010100
    但如此容易出错
    如:应该+1 + (-1)= 0,下面显示却等于-2
    0000000000000000000000000000000000000000000001(+1)
    1000000000000000000000000000000000000000000001(-1)
    1000000000000000000000000000000000000000000010(-2)
    所以需要使用到反码、补码、原码
  6. 原码、反码、补码
    原码:规定了字节数,写明符号位即原码;
    -1的原码:10000001,+1的原码:00000001
    反码:正数的反码使其原码(如+1还是1),负数的反码是符号位不变 其后全部取反(-1是1111_1110)
    补码:正数的补码使其本身,而负数的补码是在其反码基础上加1;如+1是:00000001;而-1的补码是1111_1111

(人脑可以知道第一位是符号位,可以根据符号位对真值的绝对值进行加减乘除,但是对于计算机来说,加减乘除是最最最基本的运算,要设计的尽量简单,计算机辨别符号位会让计算机的设计电路变得很复杂,于是人们想出了让符号位也参与到运算上来。减去一个数,等于加上他的负数)
如1-1=1+(-1)即1的反码+ (-1)反码等于-0;其他运算全部正确,问题在于0上,所以出现了补码0=[0000 0000]
(-1) + (-127) =[1000 0001] + [1111 1111](原码) =【1111 1111】+【1000 0001】补 = [1000 0000]补
使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].
0000000000000000000000000000000000000000000001(+1)
1000000000000000000000000000000000000000000001(-1反码)
1000000000000000000000000000000000000000000010(-2)

  1. 二进制、八进制、十进制、十六进制
    二进制(0,1);
    八进制(0,1,2,3,4,5,6,7);
    十六进制(0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)

二进制》十进制:当前数字乘以数字的2的位数次方然后相加
如:1011》123+1*21+12^0=8+2+1=11

八进制》二进制:八进制一位相当于二进制三位转换且数字按十进制运算
如:75》111101(使用八四二一法则能够快速运算)
八四二一法则:8:1000,4:100;2:10;1:01

十六进制》二进制:十六进制一位相当于二进制四位转换且数字按照十进制运算;如:a4》10100100
二进制》八进制:从低位开始取三位转换为八进制,不足补0
十六进制》二进制:从低位开始取四位转换为十六进制,不足补0

  1. 字符与字符串、字节问题
    字节,计算机存储的最小单位就是字节
    字符是一个字母,但在python中没有字符定义,只有字符串!
    而且每种语言的数据类型所占字节数是不一样的。
    例如,在c语言中,char是占用一个字节的,但是在java中是占用2个字节的

附言:
32位和64位操作系统
因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数**(拥有更大的寻址能力)**。8位处理器、16位处理器、32位处理器和64位处理器,其计数都是2的倍数。一次处理的数据越大,该电脑处理信息的能力越来越大;因此64位处理在先天就比32位处理器具有快速的能力。那为什么不用更高级的128位处理器呢?因为位数越高,处理器芯片的设计也就越复杂,目前的技术水平暂时无法制造这么复杂的芯片

数据类型对应字节数

理论上来讲 我觉得数据类型的字节数应该是由CPU决定的,但是实际上主要由编译器决定(占多少位由编译器在编译期间说了算

python qu掉单位 python的单位_补码