首页 > 系统相关 >二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通

二进制到汇编:进制,原码反码补码,位运算,通用寄存器,内存一套打通

时间:2022-09-21 19:35:33浏览次数:59  
标签:11 10 通用寄存器 反码 进制 -- 0100 原码 1000

1.语言
1.1 机器语言
人和人沟通的桥梁:语言
人与计算机打交道 --> 学习计算机的语言 --> 什么是机器语言

#我们目前主流的电子计算机!
状态: 0 和 1
#最早的程序员:穿孔卡带!
加 0100 0000
减 0100 1000
乘 0100 1000 0100 1000
除 0100 1000 1100 1000
1
2
3
4
5
6
7
1.2 汇编语言
这些复杂的机器语言的简化 --> 助记符:汇编语言 --> 人能够理解的语言转换成为机器能够理解的语言

加 INC -编译器-> 0100 0000
减 DEC 0100 1000
乘 MUL 0100 1000 0100 1000
除 DIV 0100 1000 1100 1000
1
2
3
4
离程序的本质:隔阂
汇编一般用于底层的编写,单片机…

1.3 C语言
加 A+B -编译器-> 0100 0000
减 A-B 0100 1000
乘 A*B 01001000 0100 1000
除 A/B 0100 1000 1100 1000
1
2
3
4
1.4 学习思路

 


2.进制
2.1 学习进制的障碍
十进制 --> 人类天然的选择就是十进制,十个指头 --> 跳出固有思维的方法

每一种进制都是完美的,都有自己的计算方式

2.2 进制类型
1进制

逢一进一,结绳记事

-2进制

逢二进一,计算机

-8进制

逢八进一,8个符号组成:0 1 2 3 4 5 6 7

-8进制

逢十进一,8个符号组成:0 1 2 3 4 5 6 7 8 9

-16进制

逢十六进一,8个符号组成:0 1 2 3 4 5 6 7 8 9 a b c d e f

进制并没有那么复杂,以查数为例

# 一进制
1
1 1
1 1 1
1 1 1 1
......

#二进制
0 1
10 11
100 101
110 111
1000 1001

# 三进制
0 1 2
10 11 12
20 21 22
100 101 102
110 111 112
120 121 122
......

# 七进制
0 1 2 3 4 5 6
10 11 12 13 14 15 16
20 21 22 23 24 25 26
......
60 61 62 63 64 65 66
100 101 102 103 104 105 106
......

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2.3 进制的本质
就是一组符号,逢几进几

真实十进制:0 1 2 3 4 5 6 7 8 9 --> 10

我的十进制:0 2 4 6 a o e f k q --> 20 (对应真实的10)

加密解密:程序员 —— 破解程序的人 --> 进制的加密

数字量一大,总是有规律的

问题: 1 + 1 = 3 是对的吗? --> 用进制来回答这个问题

3.进制怎么运算
运算的本质就是 查数

八进制表:

0 1 2 3 4 5 6 7
10 11 12 13 14 15 16 17
20 21 22 23 24 25 26 27
八进制的乘法表:

1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5 1 * 6 = 6 1 * 7 = 7
2 * 2 = 4 2 * 3 = 6 2 * 4 = 10 2 * 5 = 12 2 * 6 = 14 2 * 7 = 16
3 * 3 = 10 3 * 4 = 14 3 * 5 = 17 3 * 6 = 22 3 * 7 = 25
4 * 4 = 20 4 * 5 = 24 4 * 6 = 30 4 * 7 = 34
5 * 5 = 31 5 * 6 = 36 5 * 7 = 43
6 * 6 = 44 6 * 7 = 52
7 * 7 = 61
八进制的加法表:

1 + 1 = 2
1 + 2 = 3 2 + 2 = 4
1 + 3 = 4 2 + 3 = 5 3 + 3 = 6
1 + 4 = 5 2 + 4 = 6 3 + 4 = 7 4 + 4 = 10
1 + 5 = 6 2 + 5 = 7 3 + 5 = 10 4 + 5 = 11 5 + 5 = 12
1 + 6 = 7 2 + 6 = 10 3 + 6 = 11 4 + 6 = 12 5 + 6 = 13 6 + 6 = 14
1 + 7 = 10 2 + 7 = 11 3 + 7 = 12 4 + 7 = 13 5 + 7 = 14 6 + 7 = 15 7 + 7 = 16
# 用八进制计算下面结果
277 + 333 = 632
276 * 54 = 20250
237 - 54 = 163 # 减法的本质就是加法 --> 237 + (-54)
234 / 4 = 47 # 除法的本质:除数乘以那个数最接近的结果即可
1
2
3
4
5
结论:无论是什么进制,本身都是有一套完美的运算体系的,我们都可以通过列表的方式将它计算出来

4.二进制
为什么学习理解二进制:

计算机使用二进制
寄存器、内存、位,底层的每一位都是有含义的 --> 汇编入门理解的基础
硬操作:达到极限了 --> 软操作的提升:追求语言的极限——并发语言

电子计算机:

# 二进制: 0 和 1
0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
# 二进制这么写并表示是很麻烦的 --> 能否简化二进制 --> 用十六进制表示
0 1 2 3 4 5 6 7 8 9 a b c d e f
1
2
3
4
5.数据宽度
计算机内存是有限制的 --> 给数据增加数据宽度

5.1 强类型语言
C,C++,Java都需要定义数据的类型 --> 计算机底层需要我们给这些数据定义宽度

单位 大小
位(bit) 0 - 1
字节(byte) 0 - 0xFF
字(word) 0 - 0xFFFF
双字(dword) 0 - 0xFFFFFFFF
在计算机中,每个数据都需要给它定义类型 --> 即给它定义宽度,在内存中的宽度

5.2 弱类型语言
弱类型语言不需要去定义类型,直接 let var 定义,不需要区分类型 --> 这是因为编译器帮我们做了

6.有符号数和无符号数

————————————————
版权声明:本文为CSDN博主「是谢添啊」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_62982856/article/details/126052638

标签:11,10,通用寄存器,反码,进制,--,0100,原码,1000
From: https://www.cnblogs.com/wangprepre/p/16716859.html

相关文章

  • Java基础-原码、反码、补码的理解
    注意,我们这里举列的原码和反码只是为了求负数的补码,在计算机中没有原码,反码的存在,只有补码。 一.原码1>.正数的原码就是它的本身假设使用一个字节存储整数,整数10......
  • go中的 位预算,反码、补码、原码
    https://baike.baidu.com/item/%E4%BD%8D%E8%BF%90%E7%AE%97/6888804首先关于“位运算”,看下百度百科就行了。 总结:在go语言中,^这个符号具有取反的意思,举例:^x的意思......
  • 【Java基础】二进制的三种形式:原码、反码、补码
    1.二进制的三种形式原码:数值的二进制,最高位是符号位负数的反码:对原码按位取反,最高位确定为1负数的补码:反码+1计算机以二进制补码的形式保存所有的整数正数的原码、反......