存储于计算机内的各种二进制数,严格意义上应该称作二进制位串(或位序列),这些二进制位串可能是数,也可能是编码(比如ASC码、汉字内码等)或机器指令。
用简单的二进制位串表现内涵迥异的内容是我们不熟悉和容易迷惑的,但想想我们的手指就会感到释然:手指不仅可以表示数,也可以表示OK、WC、“你真棒”、“石头、剪子、布”、证券交易所、特警突击队以及划拳用的手势等。
面对一个孤立的二进制位串,我们是无法确定它究竟是数、是码还是指令的。比如一个目标程序,其内容显然是机器代码,但当对该程序进行传送或加密处理时,这些代码就成了被其他程序处理的数据。这和我们的手势又很类似:竖起食指和中指,可以是 2、“剪子”,也可以是“victory”表示顺利等。可见,一个二进制位串究竟是什么,这是由编程者对它的使用确定的。
初学的朋友往往会问怎样“区分”无符号数和带符号数,其实两者在形式上是没有区别的,区别就在你的心里:如果你将二进制的最高位视为符号位,就是带符号数;如果将其看作是一个有效数位而不是符号位,则为无符号数。
当 CPU 处理一个二进制数时,其实也弄不清楚这个数是有符号还是无符号数;由于引入了补码,使得加减计算的指令对有符号数和无符号数的处理是一样的,所以在进行加减运算时, CPU 将运算结果作为有符号数和无符号数对符号位的影响都“罗列”出来了,供编程者根据需要使用。
- [游客] 说的不错,但是现在国人能有多少个学习这个的时候还能有开拓视野的想法。。。 04/08 09:13
- [scuzg] 0fch展开成二进制数: 11111100,其中最高位是符号位,所以: 7ch+4=80h=12 12/20 19:05
- [842460904] 理论是应该负数原码和补码数值之和等于128,可为什么。fc和它的补码-4相加,即252+(-4)=? 09/03 23:38
- [fpamc] 顶顶…… 05/25 09:49
- [scuzg] 20位,图中有说明。 12/29 15:45
- [scuzg] 表示8位二进制数的16进制数fdh,因高位是f,所以前面前缀0以区别于标识符,也就是说,当对应8位二 12/29 15:42
- [powerofthinking] 博主的文章不错,希望再多写几篇。 12/18 13:40
- [游客] 请问0fdh为什么不是0000 1111 1101 b ?如果最高位视为符号位,它就是一个带符号数, 12/17 23:08
- [游客] 请问scuzg老师,地址加法器是多少位的啊(物理连接结构)?寄存器是16位,地址线20位,地址加法器 12/17 23:02
- [游客] 地址译码逻辑是不是应该在CPU内部啊? 我也觉得文章有点问题,还有就是看了scuzg老师很多文章, 12/17 22:59
- [qqqun238564439] 厉害 04/10 10:57
- [suixin] 少了个你,呵呵 “看着你的回答真长见识” 12/01 09:31
- [suixin] 看着的回答真长见识 12/01 09:29
- [fangorc] 先弄个友情链接,老师这的好东西太多了,慢慢消化~ 08/07 22:03
- [zdpopup] 谢谢scuzg 的宝贵意见,我看了2次你的话 08/05 01:43
- [游客] 过来踩踩。哈哈!端他爸 08/03 11:28