C语言操作符详细介绍(一)

简介: C语言操作符详细介绍

前言🚩


       学了这么长时间的C语言,我也刷了不少的题目,其中每到遇见关于操作题这样的概念类型的选择题我都要标记一下,或者直接瞎选一个。现在趁着刚刚考试完期末周的劲头还没有过去,硕硕就赶紧复习加上查找资料创作出来了一篇关于C语言操作符的博客。各位看官坐稳扶好了,我们要发车了🥰🥰


一、原码、反码、补码的基础概念


       在要学习下面的位操作符之前,让我们先了解原码、反码和补码的概念。对于一个数计算机要使用一定的编码方式进行存储,原码、反码、补码是机器存储一个具体数字的编码方式。


1.原码


       🍔原码就是符号位加上真值的绝对值,即:用第一位表示符号,其余位表示值。


比如:如果是8位二进制:


[+1]   正一的原码 = 0 000 0001


[-1]  负一的原码  = 1 000 0001


       🍪第一位是符号位


       🥝因为第一位是符号位,所以8位二进制数的取值范围就是:(即第一位不表示值,只表示正负。)


        [1111 1111 , 0111 1111]  即 [-127 , 127]


       💧总结一句话:原码是人脑最容易理解和计算的表示方式。


2.反码


       🍔反码的表示方法是:正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反。


原码 反码
+1 0 000 0001 0 000 0001
- 1 1 000 0001 1 111 1110


       💧可见如果一个反码表示的是负数,人脑无法直观的看出来它的数值。通常要将其转换成原码再计算。


3.补码


       🍔补码的表示方法是:正数的补码就是其本身,负数的补码是在其原码的基础上,符号位不变,其余各位取反,最后+1。(也即在反码的基础上+1)


原码 反码 补码
+1 0 000 0001 0 000 0001 0 000 0001
- 1 1 000 0001 1 111 1110 1 111 1111


       💧对于负数,补码表示方式也是人脑无法直观看出其数值的。通常也需要转换成原码再计算其数值。


二、原码、反码、补码的计算方法


1.原码


       🍪原码:将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。


2.反码


       🍪反码:如果是正数,则表示方法和原码一样;如果是负数,符号位不变,其余各位取反,则得到这个数字的反码表示形式。


3.补码


       🍪补码:如果是正数,则表示方法和原码一样;如果是负数,则将数字的反码加上1(相当于将原码数值位取反然后在最低位加1)。


三、算术操作符


       🍔算数操作符一共有五个


       1、+(加)    


       2、-(减)  


       3、*(乘)    


       4、/(除)  


       5、%(取模)


🔴1. 除了 %(取模) 操作符之外,其他的几个操作符可以作用于整数和浮点数。

🔴2. 对于 / (除)操作符如果两个操作数都为整数,执行整数除法。而只要有浮点数执行的就是浮点数除法。

🔴3. % (取模)操作符的两个操作数必须为整数,返回的是整除之后的余数。


四、移位操作符


<< 左移操作符
>> 右移操作符


🚨注:移位操作符的操作数只能是正数。

🚨注:移位操作符的操作数只能是整数。


1. 左移操作符


       🍟移位规则:左边抛弃、右边补0

 

d27c03303734c9151e7f771d449c8334_0f3da134c7af46a6a98c1d0ed0c06882.gif


2. 右移操作符


   🍟移位规则:



  首先右移运算分两种:


       ⭕ 逻辑移位


       ⭕ 算术移位



(1) 逻辑移位


       左边用0填充,右边丢弃


852b0cefa7778e43d827e1f911b1b5b1_815a3cbe2911679b9bc59c667a5b4400.gif


(2) 算术移位


       左边用原该值的符号位填充,右边丢弃


7eec34f65365521bf790fb036cf8ddb5_135eaa37956341c7b7341648c1c4282a.png


警告🚨

       对于移位运算符,不要移动负数位,这个是标准未定义的。

例如:


int num = 10;
num>>-1;//error

目录
相关文章
|
23天前
|
存储 C语言 索引
【C语言篇】操作符详解(下篇)
如果某个操作数的类型在上⾯这个列表中排名靠后,那么⾸先要转换为另外⼀个操作数的类型后执⾏运算。
|
23天前
|
程序员 编译器 C语言
【C语言篇】操作符详解(上篇)
这是合法表达式,不会报错,但是通常达不到想要的结果, 即不是保证变量 j 的值在 i 和 k 之间。因为关系运算符是从左到右计算,所以实际执⾏的是下⾯的表达式。
|
1月前
|
C语言
C语言操作符(补充+面试)
C语言操作符(补充+面试)
30 6
|
30天前
|
存储 编译器 C语言
十一:《初学C语言》— 操作符详解(上)
【8月更文挑战第12天】本篇文章讲解了二进制与非二进制的转换;原码反码和补码;移位操作符及位操作符,并附上多个教学代码及代码练习示例
42 0
十一:《初学C语言》—  操作符详解(上)
|
2月前
|
C语言
五:《初学C语言》— 操作符
本篇文章主要讲解了关系操作符和逻辑操作符并附上了多个代码示例
32 1
五:《初学C语言》—  操作符
|
3月前
|
C语言
C语言逻辑操作符的短路问题
C语言逻辑操作符的短路问题
|
3月前
|
编译器 C语言
【C语言】:中移位操作符,位操作符详运算规则详解
【C语言】:中移位操作符,位操作符详运算规则详解
27 1
|
3月前
|
存储 编译器 C语言
|
3月前
|
存储 C语言 索引
【C语言基础】:操作符详解(二)
【C语言基础】:操作符详解(二)
|
3月前
|
编译器 C语言
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
C语言学习记录——操作符详解知识点选记(算术操作符、单目操作符、移位操作符、关系操作符、逻辑操作符、条件操作符......)二
38 3