程序员最近都爱上了这个网站  程序员们快来瞅瞅吧!  it98k网:it98k.com

本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2023-05(5)

读书笔记-程序是怎么跑起来的-摘要1

发布于2021-05-29 23:21     阅读(1099)     评论(0)     点赞(1)     收藏(1)


1.CPU和内存是由许多晶体管组成的电子部件,简称IC
--物理上,这二者都有许多触角

2.CPU从功能上分为4个部分:寄存器、控制器、运算器、时钟
--见名知意

3.程序启动后,根据时钟信号,控制器从内存中读取指令和数据。通过对这些指令加以解释和运行,
运算器就会对数据进行运算,控制器根据该运算结果来控制计算机。
--计算过程中,可以将数据暂存至寄存器,谁还不是个宝宝

4.CPU是具有各种功能的寄存器的集合体,分为8种,分别是累加寄存器、标志寄存器、程序计数器、指令寄存器、栈寄存器、
基址寄存器、变址寄存器、通用寄存器
--前5种只有一个

5.程序的流程分为顺序执行、条件执行、循环执行三种
--和Java代码一样

6.机器指令主要是:数据转送指令、运算指令、跳转指令、call/return指令
--一看还真不多

7.IC有许多引脚,每个引脚只有两个状态,有电没电,与二进制完美符合。
--就是你了

8.一个引脚是一位,8位为一个字节

9.移位运算:将二进制的各位数值进行左右移位的运算。分为左移(<<)和右移(>>),左移运算时,空出的低位,用0补充。右移运算时,空出的高位,用符号位的数值补充
--符号位就是左一,如0000 0001,符号位是0;1000 0001,符号位是1

10.二进制的最高位(左一)为符号位,0表示正数或者0,1表示负数。

11.8位二进制的1是0000 0001,那么-1是1000 0001?
不是的,因为1+(-1)=0,但是0000 0001 + 1000 0001 = 1000 0010,明显不是0
这是因为计算机做二进制的减法运算时,实际上用的是加法运算。

12.表示负数时,需要用“二进制的补数”,补数:用正数表示负数
--绕进去了没

13.补数求法:各位数的数值全部取反,然后加1

  1. -1,也就是要用1的补数代替
  2. 1:0000 0001
  3. 取反:1111 1110
  4. 加1后:1111 1111
  5. 所以-1的8位二进制是1111 1111
  6. 1+(-1)就是
  7. 0000 0001 
  8. +
  9. 1111 1111 
  10. =
  11. 1 0000 0000
  12. 溢出的高位舍去,变成了0000 0000

14.二进制的值取反加1,再与二进制的原值相加,结果为0

15.计算3-5
3-5
就是
3+(-5)

3为 0000 0011
-5为5的补数

  1. 5 0000 0101
  2. 取反:1111 1010
  3. 加1: 1111 1011
  4. -5即为 1111 1011

0000 0011
+
1111 1011
=
1111 1110

那么结果值1111 1110 它的最高位是1,表示负数。那么它到底是多少呢?

可以先看下它的补数

  1. 原数:1111 1110
  2. 取反:0000 0001
  3. 加1:0000 0010

0000 0010换算为10进制的话,就是2
那么1111 1110按照 原数+补数=0 的原则,换算为就是-2

所以3-5=-2

16.逻辑右移,高位补的是0,算术右移,高位补的是符号位的数值

17.逻辑运算,0为false,1为true

原文链接:https://blog.csdn.net/JustDI0209/article/details/117351658



所属网站分类: 技术文章 > 博客

作者:小光头吃饭不用愁

链接:http://www.javaheidong.com/blog/article/207937/625786b32a313a4c87e3/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

1 0
收藏该文
已收藏

评论内容:(最多支持255个字符)