书香雅阁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 712|回复: 0

【进制的理解】

[复制链接]

380

主题

403

帖子

158万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1581345
发表于 2023-2-22 01:48:16|字数:797 | 显示全部楼层 |阅读模式
LV10 站长

很多人可能听过计算机的最底层是2进制执行,但是原理并不知道,我们今天先不讨论那么复杂的问题,先讨论什么是进制

1+9=10,10并不是1个字符,而是2个字符,也就是说在10进制里面没有“10”这个字符,10需要由1和0来表示

那么8进制呢
1+1=2
1+5=6
1+6=7
1+7?

8进制就是满足8就进1位,所以1+7=10,好的,继续
10+1=11
10+5=16
16+1=17
17+1=?


    1 7
+    1
——————
    2 0

可能大家已经有一定的头绪了,那我们来讲一下什么是2进制,2进制就是满足2就进1位
1+0=1
1+1=?

      1
+    1
——————
    10


10+1=11
11+1=?

    1 1
+    1
——————
1 0 0

可能有些人要说,感觉cpu烧掉了,11+1不是应该=20吗,2进制没有2,在十进制中99+1=100大家知道,那11+1=100同样应该是很好理解的


重点:进制在代码中的应用
当一些软件涉及到内存操作的时候,会涉及一个叫内存地址的名词,内存地址是16进制的,也就是很多人常说的基质+偏移,这里是要做16进制的运算,但是编程语言只能进行10进制的运算,所以需要把16进制的内存地址先转为10进制,然后使用10制运算出结果后再变为16进制

(提示,易语言用户在精易模块的进制区有相关命令)
进制.png

难点:什么是16进制
10进制里面没有一个字符可以表示10,但是在16进制里面使用A表示10,B=11,C=12,D=13,E=14,F=15
9+1=A
A+2=C
F+1=10
E+2=10
F+3=12


看到这里,很多人可能恍然大悟,终于知道内存中那些ABC是什么意思了

拓展点:
以以后如果看到一些教程代码出现AB1D这种类型的数据,基本可以推断是16进制的数据,很多数据可能都会使用16进制来表示,比如颜色,如#ccc


(点击返回课程目录https://shuxiangyage.net/forum.php?mod=viewthread&tid=1134
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|书香雅阁论坛 ( 湘ICP备17011672号-3 )

GMT+8, 2024-4-24 16:39 , Processed in 0.110536 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表