0
点赞
收藏
分享

微信扫一扫

(第14章)LinuxC本质中计算机中数的表示


文章目录

  • ​​一、不同进制之间的换算​​
  • ​​1.二进制的最高位和最低位​​
  • ​​2.十进制转二进制:除二反序取余法​​
  • ​​3.八进制和十六进制​​
  • ​​二、整数的加减运算​​
  • ​​1.Sign and Magnitude表示法​​
  • ​​2.十进制的加减法​​
  • ​​3.二进制减法方法1(用的少,0的表示不唯一,但是自己运算的速度快)​​
  • ​​4.二进制减法方法2(用的多,但是自己的运算速度不快)​​
  • ​​5.有符号数和无符号数​​
  • ​​三、浮点数​​
  • ​​1.浮点数的基本概念​​
  • ​​2.浮点数相加:做浮点运算时要注意精度损失问题​​

一、不同进制之间的换算

1.二进制的最高位和最低位

(第14章)LinuxC本质中计算机中数的表示_十进制

2.十进制转二进制:除二反序取余法

(第14章)LinuxC本质中计算机中数的表示_十进制_02

3.八进制和十六进制

(第14章)LinuxC本质中计算机中数的表示_浮点数_03

二、整数的加减运算

本节举的例子都用8个bit表示一个数,实际计算机做整数加减运算的操作数可以是8位、16位、32位甚至64位的。

1.Sign and Magnitude表示法

  • 0表示正,1表示负,剩下的7位表示绝对值的大小,所以加法逻辑如下
  • 减法逻辑如下
  • 缺点如下:

2.十进制的加减法

(第14章)LinuxC本质中计算机中数的表示_十六进制_04


(第14章)LinuxC本质中计算机中数的表示_十六进制_05

3.二进制减法方法1(用的少,0的表示不唯一,但是自己运算的速度快)

(第14章)LinuxC本质中计算机中数的表示_十进制_06


(第14章)LinuxC本质中计算机中数的表示_浮点数_07

4.二进制减法方法2(用的多,但是自己的运算速度不快)

(第14章)LinuxC本质中计算机中数的表示_十六进制_08


(第14章)LinuxC本质中计算机中数的表示_浮点数_09

5.有符号数和无符号数

(第14章)LinuxC本质中计算机中数的表示_十进制_10

三、浮点数

1.浮点数的基本概念

(1)我们的模型由三部分组成:符号位、指数部分(表示2的多少次方) 和尾数部分(小数点前面是0,尾数部分只表示小数点后的数字) 。

(2)浮点数的格式

(第14章)LinuxC本质中计算机中数的表示_十六进制_11


我们规定尾数部分的最高位必须是1,也就是说尾数必须以0.1开头,对指数做相应的调整,这称为正规化(Normalize)。

eg:

(第14章)LinuxC本质中计算机中数的表示_十六进制_12


(第14章)LinuxC本质中计算机中数的表示_十进制_13

2.浮点数相加:做浮点运算时要注意精度损失问题

(1)

(第14章)LinuxC本质中计算机中数的表示_十进制_14


(2) 因此在绝大多数平台上,一个浮点数的所有bit是0就表示0值。

(第14章)LinuxC本质中计算机中数的表示_十六进制_15


“用0初始化”的意思是变量 i 、变量 d 和数组元素 a[1]~a[9] 的所有字节都用0填充,或者说

所有bit都是0。

一个整数的所有bit是0都表示0值,但一个浮点数的所有bit是0一定表示0值吗?严格来说不一定。但是,在绝大多数平台上,一个浮点数的所有bit是0就表示0值。




举报

相关推荐

0 条评论