0
点赞
收藏
分享

微信扫一扫

从操作系统理解计算机—程序结构与存储(1)

千行 2022-04-14 阅读 56

那么现在开始我们的学习之旅


本节内容导读

本节思维导图如下:
在这里插入图片描述


程序结构与存储(1)

一、定点数的表示与运算

进制的学习在计算机学习中是极为重要的,在嵌入式、硬件设计、电器自动化、电子电路甚至金融行业都有应用。十进制是是最常用的,满10进1的概念是一个基本的常识。所以十进制就说这么多。进制学习这块儿应该深入学习的是二进制。

1.1 进位计数与相互转换


(1)进位计数


(2)十进制转换其他进制



(3)二进制与其他进制的转换


(4)总结

1.常用数值

这里给出一般用的进制数值转换表:

十进制数值01234567
十六进制数值01234567
八进制数值01234567
二进制数值00000001001000110100010101100111
十进制数值89101112131415
十六进制数值89ABCDEF
八进制数值1011121314151617
二进制数值10001001101010111100110111101111

除上表所示的值之外,我们对以下的值也应该敏感:
八位二进制的真值

八位二进制1111 1111十六位二进制1111 1111 1111 1111十五位二进制0111 1111 1111 1111
十进制255十进制65535十进制32767

2. 各种进制前导符

二进制是Binary,很多地方我们也可以看到使用BIN简写
八进制是Octal,很多地方我们也可以看到使用OCT简写
十进制为Decimal,很多地方我们也可以看到使用DEC简写
十六进制为Hexadecimal,很多地方我们也可以看到使用HEX简写
在C语言中,需要使用前导符标识数值的进制,不指定的话一般默认十进制,具体,比如:

int a = 0b11; //表示二进制数11

几种进制的前导符如下:

进制前导符
二进制0b或者0B
八进制0
十六进制0x或者0X

1.2 定点数的表示与运算


这里强调一下余数的定义,对于A mod B=C,结果C满足以下条件
C = A − ⌊ A / B ⌋ B C=A-\lfloor A/B\rfloor B C=AA/BB

通过这个式子能够计算负数对正数的余数(在许多编译器中求余并不是使用以上公式,但是也不影响同余地的操作)
例如:-2 mod 12=10,


1.2.3 定点数

定点数顾名思义其实就是小数点位置固定的数。计算机中有两种数据格式:定点数和浮点数。由于小数点位置固定不变,所以存储时小数点不进行存储,按照约定的位置计算数值。原则上说,小数点的位置可以位于任何位置,但通常将定点数表示成纯小数或纯整数,这样在硬件设计中更为实用。
为方便讨论数值范围,本文只讨论有符号数的一些性质,无符号数较为简单,读者可以根据有符号数的相关内容和自行得出。

(3)原码、反码、补码和移码,假设机器字长为n



  • 反码总结:无论小数还是整数,反码的形式就是符号位标明正负,正数反码与原码相同,负数符号位不变,原码的数值位全部取反
    之所以能够取以上形式,是由定义决定的。

对于n位字长的计算机,发生溢出时,情况如下:
在这里插入图片描述
最高位溢出时相当于增加一个 2 n 2^n 2n,为什么只能增加一个 2 n 2^n 2n呢,是因为最大的机器数相加如下:
1111…11(n个1)+1111…11(n个1)=1 1111…10(n+1个1),所以溢出时最高位只能进一位,相当于只能多一个 2 n 2^n 2n
这时再看之前举得例子对261 mod 255运算时相当于——(溢出位+机器数上的8位)mod 255 溢出位的值为 2 8 = 256 , 256   m o d   255 = 1 2^8=256,256\:mod\:255=1 28=256256mod255=1,所以反码计算时,如果发生溢出需要对计算后的结果的最低位+1

小数与整数的设计方案相同,只不过小数的长度与整数不同罢了,读者可以自行推出相关结论。(这里就一万三千字了,重复的就不写了😚)

以8位机器字长为例,这里给出补码,移码对应表:

十进制补码移码
-1281000 00000000 0000
-1271000 00010000 0001
-1261000 00100000 0002
-31111 11010111 1101
-21111 11100111 1110
-11111 11110111 1111
00000 00001000 0000
10000 00011000 0001
20000 00101000 0010
30000 00111000 0011
1251111 1101
1261111 1110
1270111 11111111 1111
举报

相关推荐

0 条评论