C 语言自学笔记 位逻辑运算符与位移运算符个人总结

本文详细介绍了C语言中的位逻辑运算符,包括按位非、按位与、按位或和按位异或,并通过实例进行解析。同时,探讨了位移运算符,包括左移和右移,分析了无符号数和有符号数在位移过程中的不同处理方式。
摘要由CSDN通过智能技术生成

目录

位逻辑运算符的说明

位移运算符的说明


1.计算机数值的表示

(1)二进制与字节

    计算机中的内存由许多称为字节的单位组成,1字节由八个二进制位bit组成。每个二进制位的值为0或1;最右边的一位称为“最低位”;最左边的一位称为“最高位”

图示例:

                                                                                     7            6           5           4            3          2            1             0

        

                                                                                     ↓                                                                                            ↓

                                                                                  最高位                                                                                   最低位

最高位(也叫符号位)存储的0或1:

存储的是0即表示正数。

若是存储为1即表示复数。

(2)数值的补码表示

(1)正数的补码与原码相同。

(2)负数的补码是其原码相反数(即符号位为1,原码符号位不变,其余按位取反。即:0变1,1变0),再在末位加1。


位逻辑运算符的说明

(1)运算对象只能是整型或字符型数据。

(2)参与运算时,运算对象以二进制形式进行相应的按位运算。

讲解形式按如下:

     ~00000011 = 11111100

       00000011&00001001=000000001

       00000011 | 00001001=00001011

       00000011 ^ 00001001=00001010

 

 

按位非:【~】

即以二进制形式进行按位取反,0变1,1变0的操作。

按位与:【&】

A&B,即以二进制形式进行各位相互运算,上下同为1即得1,上下若有1,0或0,1得0,上下俩0也得0.

详解:

这里把对看作是1,错误看作为0。

可以把按位与 看作是一个严格的老师:判断答案必须全对(即上下为1)才算对(1),而像半对半错(即上0下1或下0上1)都不給分(0).当然错两个题(上下均为0)就更不可能给分(即0)。)

按位或:【|】

A|B,以二进制进行各位相互运算,即只要上下有一个或两个1,即为1,两个0,即0.

按位异或:【^】

A^B, 以二进制形式进行相互运算,即只要有有一个1的才为1,两个1的即为0, 两个0,同0.

 


位移运算符的说明

左移:[<<]

右移:[>>]

 

...

                                                                                                            无符号数左移    舍去  ←                                          

                                                                                                                                                                                                                                                             ↑
                                                                                                                                                                                                                                                         0补

 ......

                                                                                                           无符号数右移    补入 0 →

                                                                                                                                 

                                                                                                                                                                                                                                                         ↓

                                                                                                                                                                                                                                                        舍去

...

                                                                                                           有符号左移    舍去    ←                                                                  

                                                                                                                                                                                                                                                        ↑补0

...

                                                                                                              有符号数右移           →                                                                                          

                                                                                                                                                 ↑   

                                                                                                                                                  ↑←← ←↓                                                                                    ↓                                                

                                                                                                                                                                                                                                                   舍去

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Technicality

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值