按位运算总结

本文详细介绍了C语言中的按位运算,包括补码形式、符号位、按位与、或、异或和移位运算,并提供了各种运算的实例和应用场景,如清零特定位、取某数中指定位等。
摘要由CSDN通过智能技术生成

按位运算符,参与运算的双方需要转化成各自的补码形式进行按位运算,一个正数的补码就是这个正数的二进制形式,如5的二进制形式为:101,如果用两个字节存放一个整数,则在存储单元中数据的形式:

0000  0000 0000 0101

如果是一个负数,则应先求出负数的补码。求负数的补码方法是:

1:先将此数转化为其绝对值得的二进制形式。

2:然后对其后面所有各位按位取反、

3:最后加1

例如-5 补码的求法(以两字节存放一个整数为例):

0000     0000    0000    0101             绝对值5的二进制形式

1111       1111    1111     1010            所有位按位取反

1111       1111    1111      1011            再加一, (-5最终的补码形式)

在存放整数的存储单元中,最左面一位是用来表示符号位的,如果改为是0,则表示数值为整数;如果改位为1,则表示数值为负数。

二进制数的最末为是0代表这个数是偶数,1代表这个数是奇数。

如果给整型变量分配2个字节,则

存储单元中能存放的最大值为0111 1111 1111 1111 ,第一位0代表正数,后面15位全部是1,此数值位(2^15 - 1,下面有案例讲解),即十进制数32767。

存储单元中能存放的最小值为1000  0000  0000 0000 ,第一位1代表负数,怎么算数值?

倒退:

1000  0000  0000 0000-----------------负数的二进制补码形式

0111  1111    1111   1111 ----------------减1

1000 0000      0000 0000 -------------取反登出负数绝对值的二进制形式 2^15 --------32768

所以得出最小值为------- 32768

即二字节整数的取值方位为:(-(2^15)~~~~~~~2^15-1)(-32768  ------  32767)

 

整型变量有符号,第一位是符号位。

无符号整型变量无符号,第一位也是数值位。

话说无符号两字节的整型变量的最大值是多少?

无符号两字节的最大值二进制应为: 1  1 1  1        1   1   1  1       1  1  1   1     1 1 1 1

所有位累加结果就是最大值的数值: 2^15 + 2^14 + 2^13 ......................................+2^1+ 2^0

要算好久,换一种算法:将16位全1最后加1,而然后在进位0

得出17位二进制数:1  0000  0000  0000  0000

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值