a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 97|回复: 1

[C语言] 计算机等考二级C语言精编教程:第二章(3)

[复制链接]
发表于 2012-7-31 21:48:08 | 显示全部楼层 |阅读模式
 2.3 整型数据  2.3.1 整型常量8 r2 w7 e% ]9 w3 E( m0 |. ?
  在C语言程序中,整型常量可以用十进制、八进制和十六进制等形式表示。2 N0 v" u3 H8 A' w
  十进制基本常量用一串连续的数字表示,例如32767、-32768、0等。4 A0 U& R8 u" G# U) o- |  K- f
  二八进制数也是用一串连续的数字表示,但其开头必须是数字“0”。例如010、011、016等都是合法的八进制数,与之对应的十进制数为8、9、14。因此,在C程序中不能在一个十进制数前随意添加数字“0”。例如,不能把十进制数11写成011。注意:八进制数必须用合法的八进制数字表示。例如,不能写成O18,因为数字8不是八进制数字。
+ [: M) Y  v  Q1 C" @( M  十六进制数用数字0和字母x(或大写字母X)开头。例如0x10,0Xde,0xf等都是合法的十六进制数,与之对应的十进制数分别为16、222、15。注意:十六进制数必须用合法的十六进制数字表示。十六进制数中的字a,b,c,d,e,f既可以用小写也可以用大写。* J  Z  Q5 G2 ~2 _& F8 M  [
  在C程序中,只有十进制数可以是负数,而八进制和十六进制数只能是整数。+ F0 O2 }1 [+ K1 E' f% {
  整型常量又有短整型(short int)、基本整型(int)、长整型(long int)和无符号型(unsigned)等不同类型。
" c# \9 I; L# k* z  2.3.2 整型变量
% |; J+ Z2 H: M) b# J! _6 r" h  整型变量可以分为基本型、短整型、长整型和无符号型四种。本节只介绍基本型的整型变量。
' \: W9 l( m; H+ s( {. s; E/ n  基本型的整型变量用类型名关键字int进行定义,例如:
* W2 y: Q2 q- O2 g6 ?) I2 C  int k; /*定义k为整型变量*/" {/ [- j% `5 P: t0 O
  一个定义语句必须以一个“;”号结束。在一个定义语句中也可以同时定义多个变量,变量之间用逗号隔开。例如:
1 c, ]4 S8 O% O4 Q) ]( {" }  int i,j,k; /*定义i,j,k为整型变量*/
, F9 w' B- S! d, {  不同的编译系统为int变量开辟的内存单元大小不同。VC6.0为int变量开辟4个字节(32个二进制位)的内存单元,并按整型数的存储方式存放数据,允许存放的数值范围是:+ p+ s8 n+ V& \  G& r
  -21474836x8~2147483547整型的变量只能存放整型数值。6 o  S- H& o; b, c3 ?/ R; h- b
  当按上述方式定义变量i、j和k时,编译程序仅为i、j和k开辟存储单元,而没有在存储单元中存放任何初值,此时变址中的值是无意义的,称变量值“无定义”。
1 h6 a( E/ g6 p! F9 q  C语言规定,可以在定义变量的同时给变盘赋初值,也称变量初始化。例如:
3 N4 O. X) [3 ?! H) H  main()
( ]$ M' g! i/ }7 I+ K5 G  \1 ]  V  { int i=1,j=0,k=2; /*定义i,j,k为整型变量,它们的初值分别为1、0和2*/4 g# X' f2 \" K  h! M
  ┆
5 B" z+ R: E! @3 s- h4 r6 A2 H  }
6 c! H: G  \1 }/ ]6 b/ c  2.3.3 整型数据的分类
2 M& M, X& b6 l! h  前面介绍的int类型通常称为基本整型。除此之外,C语言中整型数据还有其他三种类型:  ?- O6 D) r) u
  短整型(short int)、长整型(int或long int)、无符号型(unsigned)。若不指定变量为无符号型,则变量隐含为有符号型(signed)。
( Y$ U: u, R' t8 Q: i! k  不同的编译系统或计算机系统对这几类整型数所占用的字节数有不同的规定。表2.1列出了在VC6.0中定义的整型数所占用的字节数和数值范围。表中方括号内的单词可以省略,各单词排列的先后次序无关紧要。! q8 {( v. ~* P- I' O+ n$ t
/ }/ t3 X6 x1 ~3 `
  在VC6.0中可以在整型常量的后面加一个字母l(L的小写)或L,例如:123L、345l、0L、123456L等,这些常量在内存中占四个字节。+ T4 g  p9 f& \- y$ p% f
  无论是短整型数还是长整型数,都被识别为有符号整数。无符号整数在数的末尾应该加上字母后缀u或U。若是长整型无符号整型常量,则可以加后缀lu或LU。短整型无符号常量的取值应在0-65535范围内,长整型无符号常量的取值在0-4294967295的范围内。注意:无符号常量不能表示成小于0的负数,例如:-200U是不合法的。
回复

使用道具 举报

 楼主| 发表于 2012-7-31 21:48:09 | 显示全部楼层

计算机等考二级C语言精编教程:第二章(3)

 2.3.4 整数在内存中的存储形式  计算机中,内存储器的最小存储单位称为“位(bit)”。由于只能存放0或1,因此称为二进制位。大多数计算机把8个二进制位组成一个“字节(byte)”,并给每个字节分配一个地址。若干字节组成一个“字(word)”,用一个“字”来存放一条机器指令或一个数据。一个字含多少个字节随机器的不同而不同。如果一台计算机以两个字节(16个二进制位)来存放一条机器指令,则称此计算机的字长为16位;如果以四个字节(32个二进制位)来存放一条机器指令,则称此计算机的字长为32位。( {8 N/ ?0 f3 a1 {
  通常把一个字节中的最右边一位称为最低位,最左边一位称为最高位。对于一个有符号整数,其中最高位(最左边的一位)用来存放整数的符号,称为符号位。若是正整数,最高位放置0;若是负整数,最高位放置1。0 T1 s7 ?( l- N6 p
  一、正整数
* ~0 m! K1 F$ V; |; ]  当用两个字节存放一个short类型正整数时,例如正整数5,其在内存中的二进制码为:* N( e1 e) J6 j* t! [; H3 Q: y( ~
  0000000000000101+ e7 g+ X2 z1 D1 A6 S- ^
  对于正整数的这种存储形式称为用“原码”形式存放。因此用两个字节存放short类型的最大正整数是:
9 y, D2 e$ g8 G, z1 l3 {6 |  0111111111111111
! p. O, A: m4 Y' ~4 ]. {: y  g  它的值为32767。为简单起见,若一个字节能够正确表示一个整数时,本书则用一个字节表示。1 L) r' v' b5 G; L; D1 i
  二、负整数
! p4 c: q4 c! T, X4 C  1.负整数在内存中是以“补码”形式存放的。4 E5 f/ ]# I4 k( Y; n
  取某个二进制数的补码,例如10000101(十进制数-5)的补码,步骤如下:4 k8 R. P0 p& P% n' X2 }
  (1)求原码的反码。把原码除符号位之外的二进制码按位取反,即把1变成0,0变成1,即得到该原码的反码。例如10000101的反码为111110100。
, M: i0 U0 k. e3 X  (2)把所得的反码加1,即得到原码的补码。因此11111010加1得11111011,这就是-5在内存中的二进制码。若用两个字节表示,即为:
/ \; d# [0 m9 Z; a+ I- J: R5 a  1111111111111011
7 O! U+ [$ q& `  2.把内存中以补码形式存放的二进制码转化成十进制的负整数,步骤如下:/ L; B- n8 R1 D+ R  l. ?
  (1)先对除符号位之外的各位取反。例如有补码11111010,取反后为10000101。) s% D3 C0 F2 P2 e: X* Z& i
  (2)将所得二进制数转换成十进制数。例如,10000101的十进制数为-5。  h' `9 E8 ^4 }9 g
  (3)对所求得的数再减1,即为-6。% R3 \: ?5 ~; ~- f! p
  通过以上分析可知,由两个字节存放的最小整数是1000000000000000,它对应的十进制数为-32768,而-1在内存中存放的二进制码为1111111111111111。
/ H+ U& g; j! a8 X  三、无符号整数- V. J3 z& e1 q
  用两个字节存放一个整数时,若说明为无符号整数,则最高位不再用来存放整数的符号,16个二进制位全部用来存放整数,因此无符号整数不可能是负数。这时,若内存中存放的16个二进制位全部为1,则它所代表的整数就不再是-1,而是65535。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-6-13 16:16 , Processed in 0.351488 second(s), 23 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表