python之计算机硬件基本认知_数据单位_进制间转换_数的原码反码补码
一:计算机硬件基本认知
cpu: 中央处理器. 相当于人的大脑.运算中心,控制中心.
内存: 临时存储数据. 优点:读取速度快,缺点:容量小,造价高,断电即消失.
硬盘: 长期存储数据. 优点:容量大,造价相对低,断电不消失,缺点:读取速度慢.
操作系统:统一管理计算机软硬件资源的程序
二: 计算机文件大小单位
b = bit 位(比特)
B = Byte 字节
1Byte = 8 bit #一个字节等于8位 可以简写成 1B = 8b
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
三:进制转换
二进制:由2个数字组成,有0 和 1 例: 0b101
八进制:由8个数字组成,有0,1,2,3,4,5,6,7 例: 0o127
十进制:有10个数字组成,有0,1,2,3,4,5,6,7,8,9 例: 250
十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(字母大小写都可以,分别代表10,11,12,13,14,15) 例:0xff 0Xff 0XFF
1.其他进制转十进制
(1)二进制 转化成 十进制:
例: 0b10100101
运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=
1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
(2)八进制 转化成 十进制:
例: 0o127
运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
(2) 十六进制 转化成 十进制:
例: 0xff
运算:15*16^0 + 15*16^1 = 255
小练习: 转化成十进制
0b11010110 #214
0b01110101 #117
0o234
0o171
0x123
0x1c2
2.十进制转成其他进制
(1)十进制 转化成 二进制:
426 => 0b110101010
运算过程: 用426除以2,得出的结果再去不停地除以2,
直到除完最后的结果小于2停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
(2)十进制 转化成 八进制:
426 => 0o652
运算过程: 用426除以8,得出的结果再去不停地除以8,
直到除完最后的结果小于8停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
(3)十进制 转化成 十六进制:
运算过程: 用426除以16,得出的结果再去不停地除以16,
直到除完最后的结果小于16停止,
在把每个阶段求得的余数从下到上依次拼接完毕即可
小练习: 转化成对应进制
723 => 2
654 => 2
723 => 8
654 => 8
723 => 16
654 => 16
3.二进制与八进制转换
二进制与八进制对应关系:
八进制 二进制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
```
```
例:1010100101
八进制:从右向左 3位一隔开 不够三位用0补位 变成:
001 010 100 101
0o 1 2 4 5
```
4.二进制与十六进制转换
```
十六进制 二进制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
a 1010
b 1011
c 1100
d 1101
e 1110
f 1111
```
```
例:1010100101
十六进制:从右向左 4位一隔开 不够四位用0补位 变成:
0010 1010 0101
0x2a5
5.八进制 与 十六进制的转换
先转换成二进制 再去对应转换
比如:0x2a5 转换成 1010100101 再转8进制 0o1245
### 小练习: 转化成对应进制
0x1DD => 8
0x29a => 8
0o573 => 16
0o336 => 16
四:原码 反码 补码
1.概念
计算机的所有数据在底层都是以二进制的[补码]形式存储
实际人们看到的数字是[原码]转化来的
而[原码]是通过[补码]得到的
补码 -> 原码 -> 最后人们看到的数
***进制转换的时候需要先把内存存储的补码拿出来变成原码在进行转换输出***
正数高位补0 负数高位补1(前面空白位全是1)
数字1 00000000 1 正数高位都补0
数字-1 11111111 1 负数高位都补1
原码: 用来转换对应进制
反码: 二进制码0变1,1变0叫做反码,反码用于原码补码之间的转换.(符号位不变)
补码: 用来做数据的存储运算. 补码提出的根源是让计算机底层的实现减法操作(可以表达出一个数的正负)
言外之意:计算机默认只会做加法,例:5+(-3) => 5 - 3
乘法除法:是通过左移和右移 << >> 来实现
2.运算
(原码 反码 补码之间的转换 , 符号位不要动)
正数: 原码 = 反码 = 补码
负数: 原码 = 补码取反加1 给补码求原码
负数: 补码 = 原码取反加1 给原码求补码
小练习:
#给原码求补码
-6 的补码是多少?
原码为: 1 0000...00000110
反码为: 1 1111...11111001
补码为: 1 1111...11111010
6 的补码是多少?
6是整数原码和反码和补码相同得:
补码为:0 0000...00000110
10 的补码是多少?
补码为:0 0000...00001010
-10 的补码是多少?
原码为:1 0000...00001010
反码为:1 1111...11110101
补码为:1 1111...11110110
9 的补码是多少?
补码为:0 0000...00001001
-9 的补码是多少?
原码为: 1 0000...00001001
反码为:1 1111...11110110
#给补码求原码
1 ... 111 00011 (高位都是1)
1 ... 111 0110010 (高位都是1)
# 9+(-5) 用二进制相加运算一下
5-3 运算结果 (用二进制的形式表达)
5 + (-3) => 5 - 3
5 => 101
-3 => ?
(1) 先算-3的原码
1 0000...000 011
(2) 取反
1 1111...111 100
(3) 加1 最终值是补码 (用来做算术运算或存储用的)
1 1111...111 101
5 => 0 0000...000 101
-3 => 1 1111...111 101
2 => 0..0000 .. 010
#(1) 正数的原码 反码 补码 全都一样
因为高位时0 所以不需要再用补码取反+1 得到原码了,直接转换即可.
-5+3
-5 => ?
(1) 先算-5的原码
1 0000.0000 101
(2) 取反
1 1111.1111 010
(3) 加一
1 1111.1111 011
3 => ?
(1) 原码
0 0000.0000 011
因为是正数 所以原码和补码相同,不需要再转换了
用补码运算:
1 1111.1111 011
0 0000.0000 011
1 1111.1111 110
得到一个补码(负数)
给补码求原码:
# 取反
1 0000.0000 001
# 加一 (原码)
1 0000.0000 010
-2
******
#最终进制转换用的是原码
#做算数运算或存储用补码
python之计算机硬件基本认知_数据单位_进制间转换_数的原码反码补码的更多相关文章
- Python环境安装与基础语法(3)——进制、运算符和优先级、原码、补码
进制 转十进制:基本运算方法(权算方式) 0b1111——>1*2**3 + 1*2**2 + 1*2**1 + 1*2**0 0x7F——>7*16**1 + F*16**0 转二进制: ...
- C 标识符, 数据存储形式(原码,反码,补码)
一. 标识符 第一个字母必须是英文字母或下划线 二. 数据存储形式(补码存储) 最高位是符号位 ---- 0表示整数 ; 1 表示负数 1. 正数:原码 = 反码 = 补码 例子 : (10) 原码 ...
- 大数据学习--day02(标识符、变量、数据类型、类型转换、进制转换、原码反码补码)
标识符.变量.数据类型.类型转换.进制转换.原码反码补码 标识符: java50个关键字不能做标识符,以数字开头不能做标识符(这个老是忘记写一个类名的时候) 变量: 变量分为成员变量和局部变量,注意作 ...
- 一:1.1 python程序与数据储存【进制转换】
二进制 :0 1 [逢二进一]0+0=00+1=11+1=1011+1=100 1 1+ 1------ 100 八进制: 0 1 2 3 4 5 6 7 [逢八进一] 1+7=101+2=3 十进制 ...
- Python笔记_第一篇_面向过程_第一部分_3.进制、位运算、编码
通过对内存这一个部分的讲解,对编程会有一个相对深入的认识.数据结构是整个内存的一个重要内容,那么关于数据结构这方面的问题还需要对进制.位运算.编码这三个方面再进行阐述一下.前面说将的数据结构是从逻辑上 ...
- python2/3中 将base64数据写成图片,并将图片数据转为16进制数据的方法、bytes/string的区别
1.python2将base64数据写成图片,并将数据转为16进制字符串的方法 import binascii img = u'R0lGODlhagAeAIcAAAAAAAAARAAAiAAAzABE ...
- Java基本语法---标识符、变量、数据类型转换及进制
Java基本语法 标识符 标识符:凡事可以自己起名字的地方,都可以叫做标志符 标识符命名规则: 26个字母大小写,数字0-9,下划线_,美元符号$ 数字不能开头 不能使用关键字和保留字,但是可以包含 ...
- python介绍,计算机组成。内存分布,进制,操作系统介绍
学习小方法 三个W一个Hwwwh:what(是什么) why(为什么) where(怎么用) how(如何用) 来思考知识点多练,多写,多敲代码增加熟练度与代码量 Python 是一门面向后台的编 ...
- Python 3 实现数字转换成Excel列名(10进制到26进制的转换函数)
背景: 最近在看一些Python爬虫的相关知识,讲爬取的一些数据写入到Excel表中,当时当列的数目不确定的情况下,如何通过遍历的方式讲爬取的数据写入到Excel中. 开发环境: Python 3 ...
随机推荐
- Tomcat基本配置
第二十六课 Tomcat基本配置 目录 一. Tomcat介绍 二. 安装jdk 三. 安装Tomcat 四. 配置Tomcat监听80端口 五. 配置Tomcat虚拟主机 六. Tomcat日志 七 ...
- 菜鸟python之路-第五章(记录读书点滴)
数字 1.数字类型 python支持多种数字类型:整型.长整型.布尔型.双精度浮点型.十进制浮点型和复数 . 创建数值对象并赋值 aint=1 along=-999999999999999L aflo ...
- java面向对象编程--Josephu问题(丢手帕问题)
Josephu问题为:设编号为1,2,...n的n个人围坐一圈,约定编号为k(1<=k<=n)的人从1开始报数,数到m的那个人出列,它的下一位又从1开始报数,数到m的那个人又出列,依次类推 ...
- java版数据结构与算法第二章数组
数组由一组具有相同类型的数据元素组成,并存储在一组连续存储单元中.一维数组是常量. 二维数组:若一维数组中的数据元素又是一堆数据结构,我们称之为二维数组.二维数组可以看成是n个列向量组成的线性表. 数 ...
- linux安装虚拟机ping不通网关,ping不通外网问题解决(nat模式)
1.将网关字段改成自己想要的字段
- 西部数码虚拟空间配置ssl
1.在阿里云申请ssl证书 2.解析到西部数码cname地址 3.西部数码---> 申请ssl部署 4.申请托管证书 5.部署https后设置301跳转将http跳转到https 参照: ht ...
- c语言 实验1
实验结论 Part 1 首次运行Part 1的几个实验内容时会产生错误,原因如下 有时忘记在主函数中的每行末尾加分号 return 0 时空格错误导致程序运行失败 # include <stdi ...
- MAC--NPAPI学习(一)简要介绍NPAPI的函数
NPAPI是浏览器与插件交互的接口,下面先简要介绍一下NPAPI的函数: Mach-o entry points NPError NP_Initialize(NPNetscapeFuncs* brow ...
- Ubuntu重装VMwareTools
直接copy过来的虚拟机有问题所以需要重装. 先卸载老的: 1,进入到/usr/bin目录,执行脚本sudo vmware-uninstall-tool.pl 2,在安装前把/usr/lib/vmwa ...
- 局部变量,全局变量初始值问题----C与指针练习题4.14.1
全局变量初始化0 局部变量初始化是随机值 如下面一段代码,全局变量,将src复制n个字符到dst #include<stdio.h> void copy_n(char dst[],char ...