那些曾虐我千百遍的计算机组成原理
那些曾虐我千百遍的计算机组成原理
本笔记知识点来源于b站狂神说:聊汇编先导课,有兴趣的小伙伴点这里:狂神聊汇编先导课
文章目录
- 那些曾虐我千百遍的计算机组成原理
- 进制的本质
- 有符号数和无符号数的区别
- 令人头疼的原码、反码、补码
- 位运算
- 与(&)
- 或(|)
- 异或(^)
- 非(~)
- 移位操作
- 左移(<<)
- 右移(>>)
- 用位运算进行加减乘除
进制的本质
进制的本质是什么?进制就是一组符号和逢几进几的概念。
什么意思呢?来看一组数据
0 1 2 3 4 5 6 7 8 9 10
#可以看到,0~10就是我们定义的符号,而9下一个数字是10就是逢10进1 -》10因此我现在也可以来定义自己的进制,老王的进制
符号为 a b c d e 代表1 2 3 4 5 ,然后逢5进1
结果为0 1 2 3 4 5
a b c d e ba因此说进制的本质就是一组符号+逢几进几的概念
此种思想运用于进制加密范畴,毕竟你定义的进制符号和进制算法,别人是不知道的,解密就毕竟困难,但是如果数据量一大,任何数都可以找出规律。
有符号数和无符号数的区别
有符号数和无符号数都是用8位 二进制数来表示
即:0000 0000
但是如何表示负数呢?由此就出现了有符号数和无符号数
在无符号数中,8位表示的值就是其本身的值,例如:0000 1001 表示9
而在有符号数中,最高位的第一位表示正数(0),负数(1)
例如
0000 1001 -》9
1000 1001-》-9
令人头疼的原码、反码、补码
这些编码规则全都是针对有符号数数的
原码:
- 正数:除了第一位为符号位,对其他位本身取绝对值
- 负数:跟正数一样
反码:
- 正数:跟原码一样
- 负数:第一位为符号位,其余位对原码进行取反
补码:
- 正数:跟原码一样
- 负数:第一位为符号位,其余位对原码取反+1
例子:
1
原码 0000 0001
反码 0000 0001
补码 0000 0001-1
原码 1000 0001
反码 1111 1110 除符号位取反
补码 1111 1111 原码取反+1-7
原码 1000 0111
反码 1000 1000 除符号位取反
补码 1111 1001 原码取反+1
位运算
计算机任何操作都是通过位运算来完成的
与(&)
串联,都为1时才亮
只有当两个开关都处于关闭(1)时,灯泡才亮(1)
即只有都为1时,结果才为1
#与(&)运算
1001 0011
1110 1010
-----------
1000 0010
或(|)
并联,有1就亮
当两个开关任意一个关闭(1)时,灯泡即亮
即任意有为1,则结果位1
#或(|)运算
1001 0011
1110 1010
-----------
1111 1011
异或(^)
双刀开关,需要不同才亮
只有当开关状态不同时,灯泡才亮
即只有不同时,才为1
#异或(^)运算
1001 0011
1110 1010
-----------
0111 1001
非(~)
按位取反
#非运算(~)
1110 1010
-----------
0001 0101
移位操作
左移(<<)
#左移,低位补0
1001 0111
---------
0010 1110
左移相当于是数*2,例如101(5)左移-》1010(10)
右移(>>)
#右移,高位补符号位
1001 0111
---------
1100 1011
右移相当于是数/2
用位运算进行加减乘除
首先要理解,所有的加减乘除都是加法
例如:
6-4 =》 6+(-4)
6*3 =》 6+6+6
18/3 =》3+多少次会=18
计算机底层加法:
4+5=?
0000 0100
0000 0101
---------#加法运算只有两步,异或,与运算,且这两步无限循环,直到与运算结果都为0
#第一步:做异或运算(不同则1)
0000 0100
0000 0101
---------
0000 0001 (异或结果)#第二部,与运算(都为1则1),用来判断是否进位,如果都为0,则取上一次异或结果
0000 0100
0000 0101
---------
0000 0100#如果此时发现与运算结果不等于0,则进行第三步:与运算结果左移
0000 0100
---------
0000 1000 (左移结果)=======================================
继续做循环,用异或结果和左移结果
0000 0001
0000 1000
---------#第一步,异或
0000 0001
0000 1000
---------
0000 1001#第二部,与运算判断是否进位
0000 0001
0000 1000
---------
0000 0000#此时发现与运算结果为0,则取上一次异或结果:0000 1001 =》9
例子:8-2 =》 8+(-2)=?
-2:0000 0010
补码表示(按位取反+1):1111 11100000 1000
1111 1110
---------#异或
0000 1000
1111 1110
---------
1111 0110#与运算,判断进位
0000 1000
1111 1110
---------
0000 1000#需要进位,左移一位
0000 1000
---------
0001 0000=====================================
循环
1111 0110
0001 0000
---------#异或
1111 0110
0001 0000
---------
1110 0110#与运算判断进位
1111 0110
0001 0000
---------
0001 0000#左移
0001 0000
---------
0010 0000==========================================
循环
1110 0110
0010 0000
---------#异或
1110 0110
0010 0000
---------
1100 0110#与运算
1110 0110
0010 0000
---------
0010 0000#左移进位
0010 0000
---------
0100 0000=======================================
循环
1100 0110
0100 0000
---------#异或
1100 0110
0100 0000
---------
1000 0110#与运算
1100 0110
0100 0000
---------
0100 0000#左移进位
0100 0000
---------
1000 0000================================
循环
1000 0110
1000 0000
---------#异或
1000 0110
1000 0000
---------
0000 0110#与运算 判断进位
1000 0110
1000 0000
---------
1000 0000#左移
1000 0000
---------
0000 0000===========================
循环
0000 0110
0000 0000
---------#异或运算
0000 0110
0000 0000
---------
0000 0110#与运算
0000 0110
0000 0000
---------
0000 0000与运算结果为0,则不用进位 结果为上一次异或:
0000 0110:6
那些曾虐我千百遍的计算机组成原理相关推荐
- VMware虐我千百遍,我却待她如初恋
文章目录 一.相关环境 1.操作系统 2.VMware版本 二.我遇到过的bug 1.VMCI驱动程序无法自动安装,需要手动安装 2.Vmware提示以独占方式锁定此配置文件失败 3.VMware提示 ...
- 算法虐我千百遍,我待算法如初恋
转自:算法虐我千百遍,我待算法如初恋 算法虐我千百遍,我待算法如初恋. 学习方法 1) 把所有经典算法写一遍 2) 看算法源码 3) 加入算法学习社区,相互鼓励学习 4) 看经典书籍 基本数据 ...
- Maven 虐我千百遍,我待 Maven 如初恋 侵删
前言 在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那 ...
- 客户虐我千百遍,我待客户如初恋
误闯误撞,进入了IDC行业,从事了服务器租用及托管的销售工作.很多人问我,什么是IDC,什么是服务器?我知道我解释的过于专业那么会有更多的问题,毕竟自己也不是百科全书,只好简答回复"没有显示 ...
- 我待数据如初恋,数据虐我千百遍
我待数据如初恋,数据虐我千百遍 1.几个基础概念 1.1表达式 1.2语句 1.3程序 1.4函数 2.标识符 2.1关键字 2.2标识符的构成 3.基本数据类型 3.1整数和小数 3.2 布尔值和空 ...
- 【算法虐我千百遍,我待ACM如初恋】Hail Algorithm,Hallelujah ACM!!
(谨向余光中先生致敬) 鼠标轻划标题上的永恒常量 有人好奇的看着你,朋友 太过熟悉的窗口,人们不知 那无垠的循环中,你的叮咛 人心中总有魔兽红警反恐撸啊撸 却不知你富有魅力的救赎 三百分钟即创世 何止 ...
- 数学歌单:数学虐我千百遍,让我至今没初恋
提起数学,很多人爱之恨之,一言难尽.数学总被人贴上严肃和枯燥的标签,其实任何事物都不能将其绝对化,数学也是如此,数学也有其美的一方面,只是缺少了发现数学美的眼睛.数学和音乐当然也有交叉点,这些歌曲你都 ...
- 奇葩代码虐我千百遍,我却待它如初恋
这是哪个天才写的代码?真是神逻辑!!! 告诉我你家的地址,我保证不打你-- 大哥,你真会取名!你的英语是体育老师教的吗? 这八层嵌套是谁写的?老板,我屏太小,能换个显示器吗-- 在你们多年的程序生涯中 ...
- 烦立停第43期:分手!狗庄虐我千百遍,我待狗庄如初恋!
2019年已经过了一大半,又到了贴秋膘的季节,刚过完中秋假期的我,去重庆转了一圈,回深圳胖了三圈. 如果,哪天生活出卖了我,那我希望是按斤算的. 扯扯扯扯远了......最近一直在思考一个问题,怎么感 ...
最新文章
- tf.clip_by_value() 用法
- swift_035(Swift之第三方库Kingfisher篇)
- 数控四轴四面 CUBE 应用的软件开发
- 利用pip3安装包只能在python2中调用
- 在nodejs中创建cluster
- java中的JDBC
- 在Eclipse中使用JUnit4进行单元测试(初级篇)
- 统计通话次数和时间的软件_通话时间统计app下载|通话时间统计安卓版下载 v1.0.3 - 跑跑车安卓网...
- filter导致跨域失效_Quarkus中过滤器filter和跨域cors问题(4)
- centos7桌面脚本双击运行
- 批量梯度下降(BGD)、小批量梯度下降(mini-BGD)、随机梯度下降(SGD)优缺点比较
- EOS REX 安全系列之从源码开始玩转 REX(一)
- 部落战魂找不到服务器,部落战魂官方版
- 29、域名ICP备案查询API接口,免费好用
- Mac关机后无法重启和重启进度条走到一半死机的解决方案
- 8则励志小故事,真正的心灵鸡汤
- 探索使用JAVA将汉字解析成拼音
- 【3】WEB安全学习----HTTP协议
- 微信小程序例子——获取用户登录信息
- JAVA个人记账本代码,Java的家庭记账本程序(L)