电脑的存储机制

1、电脑的存储机制

电脑的作用

  • 1.存储数据
  • 2.处理数据

电脑存储数据有两个地方,内存磁盘

  • 内存:临时数据,正在运行的程序[运存]

  • 磁盘:永久数据,软件以及文件图片

那么,数据以什么样的方式进行存储的呢?电脑如何记录数据呢?

数据是以二进制的方式存储在内存中的

导通三极管:0:导通态 1:截至态 击穿状态【非正常态】

抽象理解

一个开关,有两种状态,开关和关闭,一种对应0,一种对应1,如果将8个开关放到一个房间中,则这间房间被称为一个“字节”,而其中的任意一个开关则代表“一位”,每个房间都有门牌号,看做“地址”,把具有这种特征的无数个房间组成摩天大厦,则摩天大厦就相当于计算机的内存【采用开关原理,计算机运行起来速率高】

2、单位

计算机中表示数据的最小单位是比特(bit—b)、又叫做位

计算机中处理数据的单位:字节(Byte — B)
1B = 8b 【1字节=8位】
1KB = 1024B
1M = 2^10KB
1G = 1024M
1T = 1024G

1k=1024

1>每年的10.24为中国的程序员节
2>程序员的工资都说多少K

3、进制以及进制的换算

进制

什么是进制

进制就是进位制,是人们规定的一种进位方法.

二进制:0b

0 1

逢二进一
0 + 1 = 1
1 + 1  = 10
101 + 110= 1011
1100 + 0101 = 10001
1010 + 0110 = 10000
八进制:0o

0 1 2 3 4 5 6 7

逢八进一
1 + 7 = 10
12 + 16 = 30
234 + 123 = 357
245 +745  = 1212 
十进制:0d

0 1 2 3 4 5 6 7 8 9

逢十进一
十六进制:0x

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

逢十六进一
 1 + f = 10
 5 + d = 12
 1f + 23 = 42
 2f4 + 32d = 621
 235 + 3ed = 622

进制的换算

十进制换算成二进制
倒除法,余数逆序
5 -->0101
11 --> 1011
14 --> 1110
15 --> 1111
二进制换算成十进制
当前的数字乘以2的位数次方,最后相加。

位数从右往左数,从0开始

1 0 1 1
1x2^3 + 0x2^2 + 1x2^1 + 1x2^0 =11

10110-->22
11011-->27
110110-->54
八进制转换二进制
一位转三位,高位不够补0
12 -->  001010
345-->  011100101
457-->  100101111
105 --> 001000101
二进制转换为八进制
三位一取:低位开始取,高位不够补0
001011101 --> 135
1001101--> 115
01011011 --> 133
110011-->63
十六进制转换二进制
一位转四位,位数不够高位补0
f --> 1111
3d --> 00111101
34a -->001101001010
fd3--> 111111010011
二进制转换十六进制
四位一取,从低位开始取,高位不够补0
101 0111 --> 57
101 0101 -->55
1110 1101-->ed
1011 1011 -->bb
拓展:

使用bin(),oct(),hex()进行转换的时候的返回值均为字符串,且带有0b, 0o, 0x前缀.

十进制转换为二进制

>>> bin(10)
'0b1010'
>>>'{0:b}'.format(10)
'1010'

十进制转为八进制

>>> oct(12)
'014'
>>> '{0:o}'.format(12)
'14'

十进制转为十六进制

>>> hex(12)
'0xc'
>>> '{0:x}'.format(12)
'c'

二进制转为十进制

>>> int('1010',2)
10
>>> eval('0b10')
2
>>> '{0:d}'.format(0b1010)
'10'

八进制转为十进制

>>> int('014', 8)
12
>>> '{0:d}'.format(0o14)
'12'
>>> eval('0o10')
8

十六进制转十进制

>>> int('0xc',16)
12
>>> '{0:d}'.format(0xc)
'12'
>>> eval('0x10')
16

注意:

hex函数比格式化字符串函数format慢,不推荐使用.

eval函数比int函数慢,不推荐使用

二进制, 十六进制以及八进制之间的转换,可以借助十进制这个中间值,即先转十进制再转其他的进制,也可以直接使用函数进制转换.

#借助十进制
>>> bin(int('fc',16))
'0b11111100'
#利用函数直接转
>>> bin(0xa)
'0b1010'
>>> oct(0xa)
'012'
>>> hex(10)
'0xa'

4、原码、反码、补码

计算机存储数据,先开辟空间再存储数据,开辟的最小单元是字节

为什么会有原码、反码与补码?

计算机只能识别0和1,而我们的数值是具有正负数之分的。于是在计算机存储数据时,最高位表示符号位,0正数 1负数。这就是机器数的原码了。

1 --> 二进制
 0000 0000 0000 0000 0000 0000 0000 0001
 0000 0000 0000 0000 0000 0000 0000 0001
------------------------------------------
0000 0000 0000 0000 0000 0000 0000 00010

1+1 ==》10
0000 0001
0000 0001
------------
0000 0010

1+(-1)==》?-2?
0000 0001
1000 0001
----------
1000 0010
结论:计算机处理数据的时候,并不是以原码的方式来进行处理的。
-1 --> 二进制
1000 0000 0000 0000 0000 0000 0000 0001
----------------------------------------
1                                     10

既然有了数值的表示方法就可以对数进行算术运算,但是带有符号位的原码在对进行负数操作时出现了问题。发现问题在带符号位的负数身上,对除符号位以外的各位逐位求反,于是就产生了反码。

1 --> 二进制
原码:0000 0000 0000 0000 0000 0000 0000 0001
-1 --> 二进制
原码:1000 0000 0000 0000 0000 0000 0000 0001
反码:1111 1111 1111 1111 1111 1111 1111 1110
----------------------------------------------
	 1111 1111 1111 1111 1111 1111 1111 1111

整数的反码等于自己本身【原码】
0000 0001  (+1)
符数的反码,符号位不变,除符号位以外对其他位逐位求反。
1000 0001 (-1原码)
1111 1110  (-1反码)

反码进行计算:
0000 0001
1111 1110
----------
1111 1111

问题出现在(+0)和(-0)上,在人的概念中零是没有正负之分的,于是就引出了补码的概念,负数的补码就是对反码加一。

-1补码:
反码:1111 1111 1111 1111 1111 1111 1111 1110
补码:1111 1111 1111 1111 1111 1111 1111 1111
1:
反码:0000 0000 0000 0000 0000 0000 0000 0001
补码:0000 0000 0000 0000 0000 0000 0000 0001
-------------------------------------------
   1 0000 0000 0000 0000 0000 0000 0000 0000
    
0	0000 0000 0000 0000 0000 0000 0000 0000
-0	1111 1111 1111 1111 1111 1111 1111 1111
--------------------------------------------
 
 补码进行计算:
 0000 0001
 
 1111 1110
 =》-1的补码
 1111 1111
 0000 0001
 ---------
10000 0000

正数:原码,反码,补码三码合一

负数:

原码:最高位【符号位】为1,与他位与正数的表示相同

反码:符号位不动,其他按位取反

补码:负数的反码加1

计算机以补码的形式存储数据

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这批ASPACCESS开发的项目源码是一系列基于ASP和Microsoft Access的技术开发的项目。ASP是一种面向Web的服务器端脚本语言,而Microsoft Access是一种关系数据库管理系统,两者的结合使得这些项目源码能够提供完整的Web应用程序解决方案。 这批ASPACCESS项目源码包括了多个功能丰富的Web应用程序,适用于各个行业和领域。这些应用程序涵盖了电子商务、数据管理、信息收集、报告生成等场景。项目源码以ASP作为开发语言,利用Microsoft Access数据库进行数据存储和管理,为用户提供了便捷的数据操作和交互功能。 每个项目源码都经过精心设计和开发,采用了现代化的开发技术和最佳实践。其特点包括清晰的代码结构、高效的数据库访问、安全的用户认证和授权机制、友好的用户界面等。这些项目源码还提供了丰富的功能模块和组件,例如数据输入与输出、报表生成、数据分析等,为用户提供了全面的数据管理和操作体验。 通过使用这批ASPACCESS项目源码,开发人员可以快速搭建基于ASP和Microsoft Access的Web应用程序,加快开发速度并降低风险。源码中的注释和文档也使得开发人员能够更好地理解和使用源码,提升开发效率。无论是初学者还是有经验的开发人员,都可以从这批ASPACCESS项目源码中获得学习和借鉴的价值,提升开发技能和项目交付质量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值