计算机组成原理

二进制:0,1,10,11,100,101,110,111,

十进制:0,1, 2,  3 , 4     ,5   , 6  ,   7

十六进制:0, 1 ,2 ,3 , 4 ,5 , 6 ,7 ,8, 9,a,  b, c, d, e, f

一.二进制转16进制要用到十进制中介:记住:十进制: 8 4  2  1对应二进制:1000,100,10,1

二进制转十六进制:

二进制:10001010::::::  

十六进制:(从右到左二进制每四个组成一组):1000         1010      :ox开头 是十六进制的象征(如:1111 这个二进制 在 十六进制中是 F)

 

二.原码,反码,补码

编码规则:

原码:最高位是符号位,对齐它的位进行本身绝对值即可

反码:1.正数:反码和原码相同

           2.负数:符号位一定是1,其余位对原码取反

补码:

           1.正数:补码和原码相同

           2.负数:符号位一定是1,且对反码加1;

三.位运算(实际上就是电路板,晶体管,计算机的底层原理)

2*8的最高效运算:?左移:

1.与运算(and,&):(电路开关,1和1得1,0和0得0,1和0得0)

1011 0001

1101 1000

这两个进行&运算:

1001 0000

2.或运算 :|(只要有一个1,就为1)

1011 0001

1101 1000

这两个|的结果是:

1111 1001

3.异或运算(^) (相同即为0,不相同则为1)

1011 0001

1101 1000

0110 1001

4.非运算(单目运算符 not )

1101 1000

5.取反运算:(原码和反码)

0010 0111

通过这些位运算就可以实现加减乘除

 

位置运算:(计算机操作位置的左移右移就可以实现数字的倍增和倍减):就是右移乘2.左移除2;

0000 0001    :1

0000 0010    :2

0000 0100    :4

0000 1000    :8

 左移:<<   :高位丢弃,低位补0

 右移 >>      :低位丢弃,高位补0或者1(根据符号位,负数补1,正数补0)

32位处理器:一个字就代表4个字节;64位处理器:一个字代表8个字节;

int a= 10

printf("%d\N" a>>2),查看内存地址

6.位运算的加减乘除

举个列子:十进制中的3+5=8

0000 0011

0000 0101

8就是:0000 1000

计算机内部如何计算:将0000 0011异或,将0000 0101进行与运算(判断进位,如果与运算结果为0,则没有发生进位)

再将两者的结果,左移一位。最后一步,再次将最新的结果进行异或。  实现数学上数字的加法:这是计算机底层的运算步骤。。。。。。

 

 7.通用寄存器

32位通用寄存器只有8个,存值的范围是:0     ~     FFFFFFFF

计算机如何向寄存器存值:对于二进制来说,直接修改值,但是要找到内存地址

或者通过汇编语言: mov  存的地址 ,存的数

                                 mov   地址1     , 地址2;一个寄存器的里值写到另一个寄存器

8.内存

寄存器很小,不够用,所以说,数据放在内存!

 

posted @   小白程序g  阅读(203)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示