关于C语言中类型的理解,有符号无符号的理解以及浮点数的理解

最近因为要开始找工作,因此开始重新写了一遍C语言。那么重新学了一遍发现自己有不少盲点,因此要好好的总结一下。

  1、关于C语言类型的理解

  2、关于C语言有符号无符号的理解

  3、关于浮点数的理解

  1、关于C语言类型的理解

  我们在平时都知道C语言的类型有很多种,比如int,char,float,当然同时还有一些struct我们自己定义的一些C语言类型,在C语言的应用中,我们可以自觉地使用这种类型来进行定义变量,那么类型究竟什么什么东西?变量又是干什么的呢?

  答:首先我们要知道,我们的所有程序编写其实说白了同时操纵计算机的内存,但是我们不可能直接操纵内存,因此我们需要找到一些接口来操纵内存。那么我觉得这些接口其实就是变量,比如我们int a,那么我们就可以通过a来操纵这段内存。

    那么类型是什么呢?我们在执行int a这段代码的时候电脑做了些什么呢?我认为至少做了两个部分。第一就是指定了某段内存的地址。比如0x11111开始的内存部分。第二就是指定了内存的大小,比如使用int就指定了我们可以操纵4个字节的内存。换句话说,类型就是将内存的属性赋予的变量

    以上就是我对类型和变量的理解。

  2、关于C语言有符号和无符号的理解

    首先要说一下整型中一共有三种表现形式,分别是无符号整型,有符号整型中的正数表示和有符号整型中的负数表示方法。其中无符号整型的范围为0~232这样的范围,而有符号整型为2-31~231这样的范围,其差别就在于前者最高位可以用来表示数字,而后者最高位只能用来表示符号。而有符号整型中的表示方法又可以分成两种,其中正数的表示方法就是其自身,而负数的表示方法为其正数的所有位置倒过来再加1.

    另外还有一点需要注意那就是有符号数与无符号数相加结果是无符号数

    以上就是我对有符号书和无符号数的理解。

  3、关于浮点数的理解

    我们以float为例,float的表示方法和int是完全不同的,首先说一下他们都是32位的 机器,但是其表示方式完全不同。float可以分成三个部分,分别是第32位(符号位),从第31位到第23位(指数位,从第22位到第0位(尾数位)。

    其中第32位符号位表示正负数,如果是0表示正数,1表示负数,其中第31位到第23位表示指数位,从第22位到第0位表示尾数位。

  接下来我举一个实例说明,黄色表示符号位,绿色表示指数位,咖啡色表示尾数位。

    举例:20.75(10进制数字)

     他的框架是这样的:

      1、把整数位变成二进制

      2、把小数位变成二进制

      3、移动位置使其在0和1中间,并确定其指数的值

      4、最终确定表示

   其中,将20转换位2进制数字,可以采用倒2法(0001 0100)

      将0.48变成二进制数字,这里要说一下,如果是整数位我们可以采用无限除2的方法,小数位我们采用无限乘以2的方法。所以小数位为10

      综上20.75变成二进制为10100.10。

      接着,移动位置使其在0~1中间。为1.010010*24则其指数值为4+127=131(为啥是加127我也没弄明白)

      最后,我们可以确定为其表示为0100000111010010000000000000000.

      以上就是我对浮点数的理解。

  

原文地址:https://www.cnblogs.com/songyuchen/p/12637564.html