强化C【C语言笔记】——位运算

位运算符C语言提供了六种位运算符

  • &:按位与
  • !:按位或
  • ^:异或
  • ~:取反
  • <<:左移
  • >>:右移

按位与运算

其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0

按位与运算通常用来对某些位清0

按位或运算

其功能是参与运算的两数各对应的二进位相或。只要对应的二个二进位有一个为1时,结果位就为1

按位或运算通常用来对某些位置1

按位异或运算

其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1(相同为1,不同为0)

求反运算

具有右结合性,其功能是对参与运算的数的各二进位按位求反

左移运算

其功能把“<< ”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0

右移运算

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

位域

有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位
为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”

“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数。每个域有一个域名,允许在程序中按域名进行操作;这样就可以把几个不同的对象用一个字节的二进制位域来表示

位域的定义和位域变量的说明

位域定义与结构定义相仿:

struct 位域结构名

       { 位域列表 };

位域列表形式为:类型说明符 位域名:位域长度 

 struct bs

     {

       int a:8;

       int b:2;

       int c:6;

     }data;
//说明data为bs变量,共占两个字节。其中位域a占8位,位域b占2位,位域c占6位。

注意:

  • 一个位域必须存储在同一个字节中,不能跨两个字节
  • 由于位域不允许跨两个字节,因此位域的长度不能大于一个字节的长度
  • 位域可以无位域名,这时它只用来作填充或调整位置。无名的位域是不能使用的

位域的使用

一般形式为:位域变量名·位域名

位域允许用各种格式输出。

如果您觉得这篇文章不错,且手里较为宽裕,可以支持一下博主,一分也是缘分😊
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇