操作符详解(上) (C语言)

06-28 1719阅读

操作符详解(上)

  • 一. 进制转换
    • 1. 二进制
    • 2. 二进制的转换
    • 二. 原码 补码 反码
    • 三. 操作符的分类
    • 四. 结构成员访问操作符
      • 1. 结构体的声明
      • 2. 结构体成员访问操作符

        一. 进制转换

        1. 二进制

        在学习操作符之前,我们先了解一些2进制、8进制、10进制等的问题,我们在平时的学习中经常听到关于进制转换的问题,其实就是数字的表达形式不同,比如我们将数字15用不同的进制表示出来:操作符详解(上) (C语言)

        (另外16进制前面加的是0x,8进制前面加的是0)

        我们重点介绍一下二进制:

        首先我们还是得从10进制讲起,其实10进制是我们⽣活中经常使用的,我们已经形成了很多尝试:

        • 10进制中满10进1

        • 10进制的数字每一位都是0~9的数字组成

        其实二进制也是一样的

        • 2进制中满2进1

        • 2进制的数字每⼀位都是0~1的数字组成

        那么1101 就是二进制的数字了。

        2. 二进制的转换

        (1) 2进制转8进制:比如15的二进制是1111,那么换成8进制就是利用15除以8看每次的余数和商,那么8进制就是17,其实8进制的每⼀位是有权重的,8进制的数字从右向左是个位、⼗位、百位…,分别每⼀位的权重是80、81、82…那么15也就是80 *7+81 *1,这就是15从二进制转成了8进制。

        (2) 10进制转2进制:道理是一样的,10进制的每⼀位是有权重的,10进制的数字从右向左是个位、⼗位、百位…,分别每⼀位的权重是 100 , 101 , 102…比如123用10进制表示就是123,而转为2进制:操作符详解(上) (C语言)

        二. 原码 补码 反码

        当我们掌握了2进制等的转换,我们就要了解一下计算机中对于整数的三种表现形式,即整数的原码、补码、反码。有符号整数的三种表示方法均有符号位和数值位两部分,2进制序列中,最高位的1位是被当做符号位,剩余的都是数值位。

        符号位都是用0表示“正”,用1表示“负”。(一个整型是由四个字节组成,一个字节占8个bit位,所以一共由32个bit组成)

        正整数的原、反、补码都相同。

        负整数的三种表示方法各不相同。

        原码:直接将数值按照正负数的形式翻译成二进制得到的就是原码。

        反码:将原码的符号位不变,其他位依次按位取反就可以得到反码。

        补码:反码+1就得到补码。

        补码得到原码也是可以使用:取反,+1的操作。

        比如:15的原码补码反码是00000000000000000000000000001111

        而 -15的原码是10000000000000000000000000001111,反码11111111111111111111111111110000(符号位不变,其他位按位取反),补码是11111111111111111111111111110001(末尾加1,得2进1,反码加1就是补码)

        对于整形来说:数据存放内存中其实存放的是补码。为什么呢?

        在计算机系统中,数值一律用补码来表示和存储。原因在于,使用补码,可以将符号位和数值域统⼀处理;同时,加法和减法也可以统⼀处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。

        三. 操作符的分类

        (1) 移位操作符:右移操作符,注意移位操作符只能适用于整数!并且移动的是二进制位中的补码。

        下面展示一些 内联代码片。

         
        
        //左移操作符
        int main()
        {
        	int a = 10;
        	int b = a 
        	int a = 3;
        	int b = 9;
        	a = a ^ b;
        	b = a ^ b;
        	a = a ^ b;
        	printf("%d %d\n", a,b);
        	return 0;
        }
        
        	//成员变量
        	char name[20];
        	int age;
        	float score;	 
        };
        int main()
        {
        	int a = 0;
        	struct student s1;
        	struct student s2;
        	return 0;
        }
        
        p上述代码就是结构体的创建,首先我们就使用struct创建了一个结构体,包括字符型、整型等,然后这就相当于一个类型了,再看我们下面的代码,就像int a一样我们使用struct student也创建变量s1、s2等,当然像代码中的变量属于局部变量,如果需要全局变量我们可以定义在函数的外部。另外我们可以直接在结构体定义的括号外面直接定义变量(也是全局变量)。/p h32. 结构体成员访问操作符/h3 p结构体成员的直接访问:结构体成员的直接访问是通过点操作符(.)访问的。点操作符接受两个操作数,使用方式:结构体变量.成员名。img src="https://img-blog.csdnimg.cn/direct/6476e64b0d184ea38c61694cb715cd1d.png" //pp结构体成员的间接访问:有时候我们得到的不是⼀个结构体变量,而是得到了⼀个指向结构体的指针。使用方式:结构体指针->成员名,如下所示:操作符详解(上) (C语言)

        以上就是操作符的部分解析,下一部分我也会及时更新。

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]