C语言基础学习必会4

学习内容

数值型

在C语言中,按被定义数据的性质,表达形式,占存储空间以及构造特点其数据类型分为 在这里插入图片描述
2. 不同的类型的差别就在于采用不同位数的二进制编码方式,占用不同的存储空间就会有不同的数值表示范围。
3. >在数学中整数是一个无限的集合,即整数的表示范围为负无穷到正无穷。可是在C语言中,C语言标准本身也并不限制各类型数据所占的存储字节数,但是在计算机中,所有数据的取值范围受限于机器所能表示的范围,不同的计算机软件对数据的存储有具体的规定在这里插入图片描述

  1. 整型数据

用于存放整型数据。根据数值的表示范围可以分为整型int、短整型short、长整型long三种。默认是有符号型的,即signed。可以根据需要,指定为无符号型,即unsigned。

当赋值的大小超过数据类型能够表示的范围时就发生数据溢出。比如,short num = 100000;

制定不同大小的数据类型,特别是制定表示范围小的类型,是考虑到某些系统需要节约内存,比如嵌入式。

不同的位数系统下,int能表示的大小不一样,32位中,int与long等价;32位以下的系统中,int与short等价,也就是嵌入式中。

在不考虑内存的情况下,或者表示很大的范围时,使用int。

在考虑正数的场合,使用unsigned。

在计算机中总是采用二进制补码的形式表示一个整型数据在这里插入图片描述

  1. 这里整型是补码的形式,第一位是表示符号的,叫他符号位,着这图中分开两截表示两个字节,补码也就是1和0互换,再将结果加一
原码、反码与补码

补码是为了解决原码不能简易的实现有符号数的运算而产生的。正数的原码、反码与补码都与原码一样。负数的反码是原码最高位为1,其他位取反;补码是反码加1。

计算机中,数据一律采用补码表示。

比如:

-8

原码:1000 1000

反码:1111 0111

补码:1111 1000

补码的反码加1就是原码,或者补码减1的反码就是原码。

内存中fffc表示的是几

fffc的二进制码,就是某个数的补码:

1111 1111 1111 1100

根据补码求原码,反码加1

1000 0000 0000 0100

计算,8-3

8的原码和补码

0000 1000

-3的原码

1000 0011

-3的补码

1111 1101

那么,0000 1000 + 1111 1101

得到,0000 0101,这个数是正数,补码就是原码,也就是5

计算,3-8

3的原码和补码

0000 0011

-8的原码

1000 1000

-8的补码

1111 1000

3-8,0000 0011 + 1111 1000

得到,1111 1011

这个数的原码1000 0100,也就是-5

  1. 和求一个数的补码相反,减1取反>10001001-1=10001000,然后取反 符号位不变,11110111>在“闲扯原码、反码、补码”文件中,没有提到一个很重要的概念“模”。我在这里稍微介绍一下“模”的概念:
    “模”是指一个计量系统的计数范围。如时钟等。计算机也可以看成一个计量机器,它也有一个计量范围,即都存在一个“模”。例如:时钟的计量范围是0~11,模=12。
    表示n位的计算机计量范围是0~2(n)-1,模=2(n)。
    “模”实质上是计量器产生“溢出”的量,它的值在计量器上表示不出来,计量器上只能表示出模的余数。任何有模的计量器,均可化减法为加法运算。
    例如:假设当前时针指向10点,而准确时间是6点,调整时间可有以下两种拨法:
    一种是倒拨4小时,即:10-4=6
    另一种是顺拨8小时:10+8=12+6=6
    在以12模的系统中,加8和减4效果是一样的,因此凡是减4运算,都可以用加8来代替。
    对“模”而言,8和4互为补数。实际上以12模的系统中,11和1,10和2,9和3,7和5,6和6都有这个特性。共同的特点是两者相加等于模。
    对于计算机,其概念和方法完全一样。n位计算机,设n=8, 所能表示的最大数是11111111,若再加1称为100000000(9位),但因只有8位,最高位1自然丢失。又回了00000000,所以8位二进制系统的模为2^8。在这样的系统中减法问题也可以化成加法问题,只需把减数用相应的补数表示就可以了。把补数用到计算机对数的处理上,就是补码。
    另外两个概念
    一的补码(one’s complement) 指的是正数=原码,负数=反码
    而二的补码(two’s complement) 指的就是通常所指的补码。
    小数补码求法:一种简单的方式,符号位保持1不变,数值位从右边数第一个1及其右边的0保持不变,左边按位取反。

  2. 单精度浮点型

十进制小数,必须带小数点。指数形式,e或者E之前必须有数字,指数必须为正数,比如12.3e3,123E3,1.23e4,1.2e-5。

实型常量,默认为double型,例如3.14是double型的;后面加f或F就是float型的,例如3.14f就是float型。

浮点型利用指数达到浮动小数点的效果,从而可以灵活地表达更大范围的实数。

//浮点型

int fudian()
 
{
   
 
         printf("%f",1.23e-5);
 
         printf
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值