《黑马视频13期》基础班课程-第四天

(1)extern:声明一个变量,但不占用内存,所以不能赋值。

(2)define:预处理里展开,用gcc -E 看预处理后的文件,就知道以后尽量不要用define,改用enum和常量或者inline。

(3)bit(位):一个二进制代表一个位,一个位只能表示0或1两种状态。数据传输是习惯以“位”为单位的。   

         Byte(字节):一个字节为8个二进制,称为8位,计算机中存储的最小单位是字节。数据存储是习惯以“字节”为单位。

         所以注意MB和Mb的区别,宽带都是以Mb为单位的。

(4)计算机源码补码反码。

          源码:原始的二进制位。但是有正负数,所以最高位为符号位(0代表正数,1代表负数)

          带来的问题:(1)0有两种存储方式;(2)正数和负数相加,结果不正确(计算机只会加不会减)

                   eg:1(0000 0001) +  -1 (1000 0001) = -2 (1000 0010)

        

          反码(为了算补码):正数的源码和反码一样,而负数在源码基础上,符号位不变,其他位取反。反码计算后的结果也是反码。

          反码存储带来一个为题:0有两种存储方式

          补码:计算机以补码方式存储(解决负数存储):整数的源码反码补码都一样,对于负数,其补码为它的反码加1

          

          十进制,都是站在用户角度去看,源码

          二进制、八进制、十六进制是站在计算机角度去看,补码

          补码如何求源码:

          (1)先对补码求反码

          (2)在1的基础上加1

            eg:char a = 0x81;printf("a=%d",a);  输出为-127

            因为a在计算机中转化为二进制为10000001,而计算机都是以补码存储的,而现实要以十进制显示,则需要转成源码,所以结果为-127。

(5)有符号与无符号数的区别:有符号数最高位作为符号位,无符号数最高位作为数值的一部分。&d为有符号数输出,%u为无符号数输出。

(6)sizeof是一个运算符,不是函数。

(7)volatile:

(8)register:

      

            

猜你喜欢

转载自blog.csdn.net/songsong2017/article/details/83084060