定点数的表示(三要素):
进位计数制 (十进制,八进制…)
定点数的二进制编码 (原码,补码,移码,反码 并且 解决了正负号的问题)
定点整数的表示(无符号整数,带符号整数)
整数采用进制表示.
计算机表示小数点:
计算机中只能通过约定小数点的位置来表示小数点
1.小数点位置约定在固定位置的数成为定点数.
2.小数点位置约定为可浮动的数成为浮点数.
定点整数: 用来表示整数,分为带符号整数和无符号整数.
定点小数: 用来表示浮点数的尾数部分
任何实数: X = ( − 1 ) s (-1)^s (−1)s * M * R E R^E RE
S取值为 0 或 1,用来决定数 X的符号
M是一个二进制定点小数,成为 X 的尾数
E是一个二进制定点整数,成为 X 的阶或指数
R是基数,可以为 2,4,16…
计算值中只要能 表示 S,M,E 三个信息,就能确定X 的值,称为 浮点数
补码原理
(模 的概念 在这个链接里介绍)
补码:
一个负数的补码等于模 - 该负数的绝对值.
计算机中的运算器是模运算系统.
一个正数的补码等于它本身.
一个负数的补码等于 将对应正数补码各位取反,末位加 1.
变形补码: 双符号(有两个符号位),用于存放可能溢出的中间结果.
真值的补码:从又想做遇到第一个 1 的前面各位取反.
补码的真值:
符号为0,则为正数,数值部分相同.
符号为1,则为负数,数值为各位取反,末位 加 1.
三种顶点编码方式:
原码:定点小数,用来表示浮点数的尾数.
移码:定点整数,用于表示浮点数的阶(指数)
补码: 表示带符号的整数.
整数分为:有符号整数和无符号整数
常在一个数的后面加 “u” 或"U" 来表示无符号数.
若同时有 无符号和带符号数进行计算,则c编译器将带符号整数强制转换为无符号数(就会将有符号数当做无符号处理)
定义 : X = 31 ,Y = 32, Z = 63,W = 64.
c90:
范围 | 类型 |
---|---|
0 ~ 2 X 2^X 2X - 1 | int |
2 X 2^X 2X ~ 2 Y 2^Y 2Y - 1 | unsigned int |
2 Y 2^Y 2Y ~ 2 Z 2^Z 2Z - 1 | long long |
2 Z 2^Z 2Z ~ 2 W 2^W 2W - 1 | unsigned long long |
c99
范围 | 类型 |
---|---|
0 ~ 2 X 2^X 2X - 1 | int |
2 X 2^X 2X ~ 2 Z 2^Z 2Z - 1 | long long |
2 Z 2^Z 2Z ~ 2 W 2^W 2W - 1 | unsigned long long |
在 c90 标准下,有些32 为系统上,c表达式 -2147483648 < 2147483647 的执行结果为 false ?
系统要先判断 两个数的类型 即为(无符号型 还是 有符号型). – -- 符号是单独 判断.
由表知,2147483648 为 unsigned int 类型,则 系统判断为 无符号类型
由上知,当有符号数值和无符号数值 比较时, 会强制转化为 无符号类型进行比较.
所以 结果为 false .