那些曾虐我千百遍的计算机组成原理

本笔记知识点来源于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. 正数:除了第一位为符号位,对其他位本身取绝对值
  2. 负数:跟正数一样

反码:

  1. 正数:跟原码一样
  2. 负数:第一位为符号位,其余位对原码进行取反

补码:

  1. 正数:跟原码一样
  2. 负数:第一位为符号位,其余位对原码取反+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

那些曾虐我千百遍的计算机组成原理相关推荐

  1. VMware虐我千百遍,我却待她如初恋

    文章目录 一.相关环境 1.操作系统 2.VMware版本 二.我遇到过的bug 1.VMCI驱动程序无法自动安装,需要手动安装 2.Vmware提示以独占方式锁定此配置文件失败 3.VMware提示 ...

  2. 算法虐我千百遍,我待算法如初恋

    转自:算法虐我千百遍,我待算法如初恋 算法虐我千百遍,我待算法如初恋. 学习方法  1) 把所有经典算法写一遍  2) 看算法源码  3) 加入算法学习社区,相互鼓励学习  4) 看经典书籍 基本数据 ...

  3. Maven 虐我千百遍,我待 Maven 如初恋 侵删

    前言 在如今的互联网项目开发当中,特别是Java领域,可以说Maven随处可见.Maven的仓库管理.依赖管理.继承和聚合等特性为项目的构建提供了一整套完善的解决方案,可以说如果你搞不懂Maven,那 ...

  4. 客户虐我千百遍,我待客户如初恋

    误闯误撞,进入了IDC行业,从事了服务器租用及托管的销售工作.很多人问我,什么是IDC,什么是服务器?我知道我解释的过于专业那么会有更多的问题,毕竟自己也不是百科全书,只好简答回复"没有显示 ...

  5. 我待数据如初恋,数据虐我千百遍

    我待数据如初恋,数据虐我千百遍 1.几个基础概念 1.1表达式 1.2语句 1.3程序 1.4函数 2.标识符 2.1关键字 2.2标识符的构成 3.基本数据类型 3.1整数和小数 3.2 布尔值和空 ...

  6. 【算法虐我千百遍,我待ACM如初恋】Hail Algorithm,Hallelujah ACM!!

    (谨向余光中先生致敬) 鼠标轻划标题上的永恒常量 有人好奇的看着你,朋友 太过熟悉的窗口,人们不知 那无垠的循环中,你的叮咛 人心中总有魔兽红警反恐撸啊撸 却不知你富有魅力的救赎 三百分钟即创世 何止 ...

  7. 数学歌单:数学虐我千百遍,让我至今没初恋

    提起数学,很多人爱之恨之,一言难尽.数学总被人贴上严肃和枯燥的标签,其实任何事物都不能将其绝对化,数学也是如此,数学也有其美的一方面,只是缺少了发现数学美的眼睛.数学和音乐当然也有交叉点,这些歌曲你都 ...

  8. 奇葩代码虐我千百遍,我却待它如初恋

    这是哪个天才写的代码?真是神逻辑!!! 告诉我你家的地址,我保证不打你-- 大哥,你真会取名!你的英语是体育老师教的吗? 这八层嵌套是谁写的?老板,我屏太小,能换个显示器吗-- 在你们多年的程序生涯中 ...

  9. 烦立停第43期:分手!狗庄虐我千百遍,我待狗庄如初恋!

    2019年已经过了一大半,又到了贴秋膘的季节,刚过完中秋假期的我,去重庆转了一圈,回深圳胖了三圈. 如果,哪天生活出卖了我,那我希望是按斤算的. 扯扯扯扯远了......最近一直在思考一个问题,怎么感 ...

最新文章

  1. tf.clip_by_value() 用法
  2. swift_035(Swift之第三方库Kingfisher篇)
  3. 数控四轴四面 CUBE 应用的软件开发
  4. 利用pip3安装包只能在python2中调用
  5. 在nodejs中创建cluster
  6. java中的JDBC
  7. 在Eclipse中使用JUnit4进行单元测试(初级篇)
  8. 统计通话次数和时间的软件_通话时间统计app下载|通话时间统计安卓版下载 v1.0.3 - 跑跑车安卓网...
  9. filter导致跨域失效_Quarkus中过滤器filter和跨域cors问题(4)
  10. centos7桌面脚本双击运行
  11. 批量梯度下降(BGD)、小批量梯度下降(mini-BGD)、随机梯度下降(SGD)优缺点比较
  12. EOS REX 安全系列之从源码开始玩转 REX(一)
  13. 部落战魂找不到服务器,部落战魂官方版
  14. 29、域名ICP备案查询API接口,免费好用
  15. Mac关机后无法重启和重启进度条走到一半死机的解决方案
  16. 8则励志小故事,真正的心灵鸡汤
  17. 探索使用JAVA将汉字解析成拼音
  18. 【3】WEB安全学习----HTTP协议
  19. 微信小程序例子——获取用户登录信息
  20. JAVA个人记账本代码,Java的家庭记账本程序(L)

热门文章

  1. C语言的字符串输入函数gets_s()
  2. Android 仿淘宝京东商品详情视频+图片与图片第一帧获取
  3. centos python3 gcc 以及 glibc版本问题
  4. Linux的上传和下载文件到Window_scp指令
  5. 微信消息订阅功能开发流程
  6. 如何做红烧肉好吃又不腻 教你做红烧肉
  7. 电子接插件选型,你选对了吗?
  8. linux编译器警告变成错误,警告就是错误
  9. Microsoft Teams Voice语音落地系列-4 实战:Teams语音路由规划与配置
  10. TA游戏推荐:黑暗画风3D动作游戏《恐惧之魂》