首页 > 其他分享 >【C语言】带你玩转“操作符”(上)

【C语言】带你玩转“操作符”(上)

时间:2024-06-22 20:58:38浏览次数:17  
标签:反码 表达式 补码 C语言 逗号 操作符 玩转 原码

目录

  1.  操作符的分类  

  2.   原码、反码、补码  

  3.  移位操作符  

3.1  左移操作符

3.2  右移操作符  

  4.  位操作符:&、|、^、~  

  5.  单目操作符  

  6.  逗号表达式   


最近准备期末考试,好久不见啦,现在回归——

正文开始——

  1.  操作符的分类  

  • 算术操作符 :+、-、*、/、%
  • 移位操作符 :<<   、>>
  • 位操作符 :  & 、 |  、  ^
  • 赋值操作符 :  = 、+=、-=、*=、/=、%=、<<=、>>==、&=、!=、^=
  • 单目操作符 :!、++、--、&、*、+、-、~、sizeof、(类型)
  • 关系操作符 : >、>=、<、<=、==、!=
  • 逻辑操作符 :  &&、||
  • 条件操作符 :  ?  :
  • 逗号操作符 :  ,
  • 下表引用 :  [ ]
  • 函数调用:()
  • 结构成员访问:.  、->

  2.   原码、反码、补码  

【重点】

整数的2进制表示方法有三种:原码、反码、补码。

有符号整数的三种表示方法均有符号位数值位两部分,2进制序列中,最高位的1位是被当做为符号位,剩余的都是数值位。

符号位都是用0表示 “正”,1表示 “负”。

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

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

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

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

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

补码——>原码 :取反,+1。

对于整形来说,数据是以 补码 的形式存放在内存中的。

why?

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

  3.  移位操作符  

<<   左移操作符

>>   右移操作符

【注】移位操作符的操作数只能是整数。

3.1  左移操作符

移动规则:左边抛弃,右边补0(移动的是存储在内存中的二进制位)

  3.2  右移操作符  

移动规则:右移运算分两种

  1. 逻辑右移:左边用0填充,右边丢弃
  2. 算术右移:左边用原该值的符号位填充,右边丢弃

【注】对于移位操作符,不要移动负数位,这个是标准的未定义的。 

例如:

1   int num = 0;
2   num >> -1;

  4.  位操作符:& 、| 、^ 、~  

&      按位与

|       按位或

^      按位异或

~     按位取反 

【注】它们的操作数必须是整数。 

 练习1:不能创建临时变量(第三个变量),实现两个整数的交换。

  5.  单目操作符  

单目操作符见下

!、++ 、-- 、& 、* 、+ 、- 、~ 、sizeof 、(类型)

  6.  逗号表达式  

1   exp1,exp2,exp3,...expN

逗号表达式,就是用逗号隔开的多个表达式。

逗号表达式,从左向右依次执行。表达式的结果是最后一个表达式的结果。

代码1
1   int a=1;
2   int b=2;
3   int c=(a>b,a=a+b,a,b=a+1); //求 c 值

代码2
1   if(a=b+1,c=a/2,d>0)

代码3
a = get_val();
count_val(a);
while(a>0)
{
   //...
   a = get_val();
   count_val(a);
}
  
用逗号表达式改写如下
while(a = get_val(),count_val(a),a>0)
{
    //...

}

完——

———————————————————纪念——————————————————

  那个夏天,结束时,你会为了什么...而...落泪...


记念_雷雨心_高音质在线试听_记念歌词|歌曲下载_酷狗音乐酷狗音乐为您提供由雷雨心演唱的高清音质无损记念mp3在线听,听记念,只来酷狗音乐!icon-default.png?t=N7T8https://t4.kugou.com/song.html?id=9IqAD2cCOV2

再见—— 

 

 


 

标签:反码,表达式,补码,C语言,逗号,操作符,玩转,原码
From: https://blog.csdn.net/lrq13965748542/article/details/139707577

相关文章

  • 【C语言/C++干货系列】你真的了解数组吗?
    目录广告前言一维数组二维数组字符数组尾声广告                      点击......
  • C语言指针(三)
    数组地址我们知道,数组名即是数组的首地址,因此#include<stdio.h>intmain(){intarr[10]={1,2,3,4,5,6,7,8,9,10};printf("&arr[0]=%p\n",&arr[0]);printf("arr=%p\n",arr);return0;}我们会发现,二者地址相同即 那么如果数组名是首地址,以下代码该怎么解......
  • C语言---动态内存管理
    1.为什么要有动态内存分配指针+结构体+动态内存管理是学习数据结构的非常重要的知识intmain(){intn=0;//向内存申请一块空间---一个整型4个字节intarr[10]={0};//向内存中申请一块连续的空间--10个整型--40个字节return0;}这两种但是上述......
  • C语言-运算、输出函数
    学习目标:运算输入输出函数学习内容:位运算:复合运算符条件运算符:?:问号是三目运算符,形式为:<表达式1>?<表达式2>:<表达式3>如:x>y?x+18:y-20;解释:如果x>y,则运行x+18,反之,运行y-20。逗号运算符:运算规则:先计算左侧的表达式,在计算右侧的表达式,最后返回右侧表达式的值(......
  • 数据结构:为什么说链表是顺序表的升级版(c语言实现)
    前言:  我们在之前的几篇文章中详细的讲解了顺序表的特点,增删改查操作和动态顺序表的优点,并使用顺序表的底层结构实现了通讯录项目,似乎顺序表是一个非常完美的数据结构,它可以实现按照需求实现增删查改,对内存的控制也较为合理,空间都是在需要时手动开辟的。但是顺序表真的完......
  • C语言中操作符详解(一)
    众所周知,在我们的C语言中有着各式各样的操作符,并且在此之前呢,我们已经认识并运用了许许多多的操作符,都是诸君的老朋友了昂操作符作为我们使用C语言的一个非常非常非常重要的工具,诸君一定要加以重视,认真理解,学会灵活运用。那么今天,我们就来系统的讲解一下C语言中的各式操作符......
  • C语言数据类型和变量
    ⽬录数据类型介绍signed和unsigned数据类型的取值范围变量算术操作符:+、-、*、/、%赋值操作符:=和复合赋值单⽬操作符:++、–、+、-强制类型转换scanf和printf介绍正文开始数据类型介绍C语言提供了丰富的数据类型来描述生活中的各种数据。......
  • c语言 字符串操作函数
    字符串操作函数1.strlen()函数strlen()函数用于计算字符串的长度,返回字符串的字符数。语法:size_tstrlen(constchar*str)参数:str–要计算长度的字符串。返回值:字符串的字符数。示例:#include<stdio.h>#include<string.h>intmain(){charstr[50]="......
  • C语言 内存操作函数
    内存管理进程空间程序,是经源码编译后的可执行文件,可执行文件可以多次被执行,比如我们可以多次打开office。而进程,是程序加载到内存后开始执行,至执行结束,这样一段时间概念,多次打开的wps,每打开一次都是一个进程,当我们每关闭一个office,则表示该进程结束。程序是静态概......
  • 【C语言】16.动态内存管理
    文章目录1.为什么要有动态内存分配2.malloc和free2.1malloc2.2free3.calloc和realloc3.1calloc3.2realloc4.常见的动态内存的错误4.1对NULL指针的解引⽤操作4.2对动态开辟空间的越界访问4.3对⾮动态开辟内存使⽤free释放4.4使⽤free释放⼀块动态开辟内存的⼀部......