数值数据的表示 -- 整数

定点数的表示(三要素):
    进位计数制 (十进制,八进制…)
    定点数的二进制编码 (原码,补码,移码,反码 并且 解决了正负号的问题)
    定点整数的表示(无符号整数,带符号整数)
整数采用进制表示.

计算机表示小数点:
         计算机中只能通过约定小数点的位置来表示小数点
         1.小数点位置约定在固定位置的数成为定点数.
         2.小数点位置约定为可浮动的数成为浮点数.

定点整数: 用来表示整数,分为带符号整数和无符号整数.
定点小数: 用来表示浮点数的尾数部分

任何实数: X = ( 1 ) s (-1)^s * M * R E R^E

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 - 1 int
2 X 2^X ~ 2 Y 2^Y - 1 unsigned int
2 Y 2^Y ~ 2 Z 2^Z - 1 long long
2 Z 2^Z ~ 2 W 2^W - 1 unsigned long long

c99

范围 类型
0 ~ 2 X 2^X - 1 int
2 X 2^X ~ 2 Z 2^Z - 1 long long
2 Z 2^Z ~ 2 W 2^W - 1 unsigned long long

在 c90 标准下,有些32 为系统上,c表达式 -2147483648 < 2147483647 的执行结果为 false ?
系统要先判断 两个数的类型 即为(无符号型 还是 有符号型). – -- 符号是单独 判断.

由表知,2147483648 为 unsigned int 类型,则 系统判断为 无符号类型
由上知,当有符号数值和无符号数值 比较时, 会强制转化为 无符号类型进行比较.

所以 结果为 false .

猜你喜欢

转载自blog.csdn.net/qq_43701555/article/details/100639758