位运算 简析

本文介绍了C语言中的位运算,包括按位与、按位或、按位异或、求反、左移和右移六种操作。这些运算常用于系统程序中,以在位一级进行处理。例如,按位与运算可用于清零或保留特定位,左移运算则会将二进制数的位向左移动指定次数,高位被丢弃,低位补0。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

位运算

 

  在很多系统程序中常要求在位(bit)一级进行运算或处理,C语言提供了位运算的功能,使得C语言也能像汇编语言一样用来编写系统程序,位运算共有 &  |  ^  ~  <<  >>  这六种。

 

1.1.1按位与运算

  按位与运算”&”是双目运算符。按位运算通常用来对某些位清0 或者 保留某些位,如把a的高8位清0,保留低8位,与作&255运算(255的二制数为0000000011111111)。参与运算的数以补码形式出现。如9&5运算过程:

  00001001

& 00000101

  00000001 (结果为1)

 

1.1.2 按位或运算

  按位或是双目运算符。通常用来对某些数保留某些位,清0某些位,参与运算的两个数以补码出现。

 

1.1.3 按位异或运算

  按位异或运算符 ” ^ ” 是双目运算符,功能是参与运算的两个数各对应的二进位相异或,当两对应的二进位相异时,结果为1。参与运算的数以补码出现,如9^5:

   00001001

^  00000101

   00001100 (结果是12)

 

1.1.4 求反运算

  求反运算符 ~ 为单目运算符,具有结合性。其功能是对参与运算的数的各二进位按位求反。如~9:

~(0000000000001001)结果为:1111111111110110

 

1.1.5 左移运算

  左移运算符 << 是双目运算符。功能是高位丢弃,低位补0 。

 

1.1.6 右移运算

  右移运算符 >> 是双目运算符。功能是把 “>>” 左边的运算数的各二进位全部右移若干位,” >> “ 右边的数指定移动的位数。

  对于有负号数,在右移时,符号位将随同移动。当为下数时,最高位补0,而为负数时,符号为1,最高位是补0或是补1取决于编译系统的规定。Turbo C和很多系统规定为补1。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值