python 计算机数据存储与进制

关于作者

周李杰,最后一批90后,现居湖北武汉

孤独患者,懒癌中期,无脑幻想者。但却人畜无害,无需远离。

兴趣众多,然无一精通。正努力成为一个有趣的人。

1
2
> print("👆以上是不完整的我") //请我吃大餐将会了解更多
>

计算机数据存储与进制

[TOC]

python软件安装

链接:https://pan.baidu.com/s/1WrbMwSLbyeXLyDWzhaFnLA
提取码:wzvn

内涵:pycharm专业版、python3.6以及安装介绍

数据存储

在前面 我们首先思考一下,

1.为什么要使用计算机?

当然是为了存储数据、处理数据

2.数据存在哪里?

数据存储在内存当中

3.那么内存是如何存储数据的呢?

首先得先要弄清楚怎么存储数字

内存

内存是计算机存储数据的一个介质

抽象内存:一个开关,有两种状态,一种为开,一种为关,我们把开对应为1,把关对应为0。把8个开关丢入到一个房间里,那么就可以称这个房间为一个字节。一个开关代表的是一位数,每个房间都有门牌号,可以看作成地址。把无数个房间罗列起来组成一个摩天大厦,把摩天大厦看做成内存。

单位

​ 1bit

​ 8bit == 1字节

​ 1024字节 == 1K

​ 1024K == 1M

​ 1024M == 1G

​ 1024G == 1T

进制

二进制

​ 逢二进一

​ 0 1

​ 1 + 1 = 10

八进制

​ 逢八进一

​ 0 1 2 3 4 5 6 7

​ 1 + 7 = 10

十进制

​ 逢十进一

​ 0 1 2 3 4 5 6 7 8 9

​ 1 + 9 = 10

十六进制

​ 逢十六进一

​ 0 1 2 3 4 5 6 7 8 9 a b c d e f

​ 1 + f = 10

进制转换

十进制转二进制

​ 公式:倒除法,余数逆序

1
2
3
4
5
6
7
例如55 
55除以227 余数1
27除以213 余数1
13除以26 余数1
6除以23 余数0
3除以21 余数1
那么逆序可得110111

二进制转十进制

​ 公式:当前的数字(0、1)乘以2的位数次方,然后相加

1
2
3
4
例如110111
1 x 2^5 + 1 x 2^4 + 0 x 2^3 + 1 x 2^2 + 1 x 2^2 + 1 x 2^1 + 1 x 2^0
= 32 + 16 + 0 + 4 + 2 + 1
= 55

八进制转二进制

​ 公式: [一转三位] 八进制的一位相当于二进制的三位,计算时按十进制转换,不足三位高位补0

1
2
3
4
例如65
6 _ _ _ 计算:6除以23,余数03除以21,余数1. 那么6可以化为 1 1 0
5 _ _ _ 计算:5除以22,余数12除以21,余数0. 那么5可以化为 1 0 1
总结可得65110101

二进制转八进制

​ 公式: [三位一取] 从低位开始,每三位得到一个八进制数字,最后高位不足则补0

1
2
3
4
例如110101
0110 _ 计算:0x2^3+1x2^2+1x2^1+0x2^0 得出0+4+2+0=6
0101 _ 计算:0x2^3+1x2^2+0x2^1+1x2^0 得出0+4+0+1=5
综上述可得11010165

十六进制转二进制

公式: [一转四位] 十六进制的一位相当于二进制的四位,计算时按十进制转换,不足四位高位补0

1
2
3
4
例如75
7 _ _ _ _ 计算:7除以23,余数13除以21,余数1. 那么7可以化为 0 1 1 1
5 _ _ _ _ 计算:5除以22,余数12除以21,余数0. 那么5可以化为 0 1 0 1
总结可得7501110101

二进制转十六进制

公式: [四位一取] 从低位开始,每四位得到一个十六进制数字,最后高位不足则补0

1
2
3
4
例如01110101
0111 _ 计算:0x2^3+1x2^2+1x2^1+1x2^0 得出0+4+2+1=7
0101 _ 计算:0x2^3+1x2^2+0x2^1+1x2^0 得出0+4+0+1=5
综上述可得0111010175

其实我们可使用一个简便得方法

叫做8 4 2 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
> 例如 01100101
> 0 1 1 0 0 1 0 1
> ---------------
> 8 4 2 1 8 4 2 1
>
> 可得出4+2=6 4+1=5
> 得出65
>
> 例如 01110101
> 0 1 1 1 0 1 0 1
> ---------------
> 8 4 2 1 8 4 2 1
>
> 可得出4+2+1=7 4+1=5
> 得出75
>

进制对应表

十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f

存储数据的方式

内存中存储的是数据的二进制形式
存储数据:
1、计算机先开辟空间,在存储数据,计算机开辟空间的最小单位是字节
2、在数据存储时,用最高位标识符号位,0表示正数,1表示复数

原码

原码:规定了字节数,写明了符号位,得到了数据的原码
思考:内存是以数据原码的形式存储的吗?

1
2
3
4
     0000 0000  0000 0000  0000 0000  0000 0001
+ 1000 0000 0000 0000 0000 0000 0000 0001
---------------------------------------------------
1000 0000 0000 0000 0000 0000 0000 0010 -2

结论:不以原码的形式存储数据

反码

反码:正数的反码就是其原码,负数的反码事其原码的符号位不变其他位取反
思考:内存是以数据反码的形式存储的吗?

1
2
3
4
    0000 0000  0000 0000  0000 0000  0000 0001
+ 1111 1111 1111 1111 1111 1111 1111 1110
---------------------------------------------------
1111 1111 1111 1111 1111 1111 1111 1111

结论:不以反码的形式存储数据

补码

补码:正数的补码是其原码(正数三码合一),负数的补码是反码加1

1
2
3
4
5
    0000 0000  0000 0000  0000 0000  0000 0001
+ 1111 1111 1111 1111 1111 1111 1111 1111
---------------------------------------------------
1 0000 0000 0000 0000 0000 0000 0000 0000
# 加法最后得到的1溢出了,没有存储到内存中

结论:以补码的形式存储数据

打赏
  • © 2019-2020 Li Jie
  • Powered by Hexo Theme Ayer
    • PV:
    • UV:

喜欢就打赏吧~

支付宝
微信