日常生活中所说的数、数据,它们有正负、大小之分,在计算机中称为“数值”数据。计算机中的数值数据分为整数和实数两大类,它们当然都是用二进制表示的,但表示方法有很大的差别。
& t% o7 y1 [8 W9 T6 o7 C) b整数
1 v, z% o! V8 |! Y$ Q; v
正整数 8位:0"255,16位:0"65535
" M/ m/ S7 H! t( |* W
负 数 符号位(0:正;1:负) 最高位为符号位(原码表示法) 8位:-127"127,16位:-32767" 32767
$ J; M m$ E w/ Z c3 }
原码、反码、补码
; L* b5 _2 r- p) ^
原码:将整数化为二进制数,符号位置0(正数)或1(负数)
0 f# J# B7 q# b
反码:负数的反码:符号位为1,绝对值部分与原码相反。
& N+ D5 L9 j% K3 Y* Y/ h
负数的补码表示:符号位也是“1”,其余为反码的最低位加“1”。
( C( S, v7 v) U9 F% S+ x5 c
注意: -0与 0在补码表示法中相同,而在原码、反码表示却不同。相同位数的二进制补码,表示的范围比原码、反码多一个(Why?)。数的原码、反码、补码都相等,即表示方法只有一种 。
+ Q# s7 a }) |/ V+ ~4 w. @
例如:
8 s( R* C" \3 M. y7 [(-43)原=10101011
/ b# w) g" O/ @; d- \( 0)原=00000000
4 p- x9 C% w) w6 J
(-0)原=10000000
`. p! O; T% s2 | z6 q' d(-43)反=11010100
x% W) w2 u/ k, `3 o6 {( 0)反=00000000
+ V$ ]9 X( s$ X2 G
(-0)反=11111111
) g! v/ u6 B6 L' T(-43)补=11010101
' I5 V& ]" b2 c e2 n( 0)补=00000000
' x. K' e7 d" T( Q7 P& t6 F: `
(-0)补=00000000
4 L; a8 A$ S% h- Z1 a注意:正整数的表示方法只有一种,并无原码、反码与补码之分
, T5 E6 ^' J8 I2 B
实 数
) h+ i p- b4 A& o' p' q9 q( w
实数是既有整数又有小数的数,一个实数可以表示成一个纯小数和一个乘幂之积。
' U+ u9 c4 `0 s
例如:
; i& u( x; \% L- N, E% o( Q( c) ]$ ^
. e; t }0 `' J- E
. |( b; j% X/ `% u2 S7 m
# R. v* d( Q% Z3 ~9 U6 }; B
6 [" Y' h# M: Q' e- i二进制也可以这样表示
; r) E5 ~# K2 m$ [
. x# ~ j( D9 p2 R$ p
; N! J3 B" v% X2 l, }7 @" ?9 i
: J+ L' p. v5 U% [2 a指数上的数均为二进制
! e& c3 q: S/ I) P: N' J
任意一个实数,在计算机内部都可以用指数(整数)和尾数(纯小数)来表示 ,这种方法叫做浮点表示法(浮点数)。所以,在计算机中实数也叫做“浮点数”,而整数则叫做“定点数”。
! a1 f- t E% w0 b
浮点数的表示方法不唯一,长度越长,范围越大,精度越高。不同的规定使得相互间的 数据不兼容,为此IEEE制定了浮点数的工业标准。
+ {2 H+ u5 d) L# G
PC中有:16位整数、短整数(32位)、长整数(64位),单精度(32位)、双精度(64位)和扩充精度(80位)浮点数