前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C语言位操作 | 按位运算符

C语言位操作 | 按位运算符

作者头像
CtrlX
发布2022-10-27 16:04:15
1.3K0
发布2022-10-27 16:04:15
举报
文章被收录于专栏:C++核心编程C++核心编程

二进制数、位、字节

PS:位运算详见计算机科学导论

前言:

C语言中可以单独操控变量中的位,例如:通常向硬件设备发送一两个字节来操控这些设备,每个位(bit)都有特定的含义,另外,与文件相关的操作信息经常被存储,通过特定的位表明特定的项。许多的压缩和加密操作都是直接除理单独的位。

高级语言一般不会处理这些级别的细节,C在提供高级语言便利的同时,还能在为汇编语言所保留的级别上工作。

二进制整数

C语言用字节(byte)表示存储系统字符集所需要的大小,所以C字节看可能是8位,9位,16位或者其他值。不过藐视存储芯片和数据率中所用的字节指的是8位字节。

假设一个字节为8位,每一位的编号对应2的相应指数,该字节能表示的最大数字是吧每一个位都设置为1:11111111这个二进制数的值就是128+64+32+16+8+4+2+1 = 255,二这个字节最小的二进制数是00000000,其值是0,因此1字节可以存储1~255范围内的数字,总共256个值。

或者不同的方式解释位组合,程序可以用1字节存储-128~+128范围内的整数,总共还是256个值。

例如:

C

代码语言:javascript
复制
unsigned char//用一个字节表示的范围是0~255
signed char//用一个字节表示的范围是-128~+128

有符号整数

如何表示有符号整数取决于硬件,而不是C语言。

表示方法:表示有符号数最简单的方法是用1位存储符号,用剩下的7位来表示数字本身,用这种符号量表示法,10000001表示-1,00000001表示1.因此,其表示范围是-127~+127

缺点:这种方法表示会出现两个0:+0和-0,这很容易混淆,而且两个位来存储同一个值也很浪费。

解决方法:二进制补码(详见计算机科学导论P32)简单概述:以1字节为例,

PS:二进制反码

二进制浮点数

二进制小数

浮点数表示方法

其他进制数

八进制

十六进制

C按位运算符

按位逻辑运算符

用法:掩码

用法:打开位

用法:关闭位(清空位)

用法:切换位

用法:检查位的值

移位运算符

示例

位字段

示例

位字段和按位运算符

对齐特性(C11)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二进制数、位、字节
    • 二进制整数
      • 有符号整数
        • 二进制浮点数
          • 二进制小数
          • 浮点数表示方法
      • 其他进制数
        • 八进制
          • 十六进制
      • C按位运算符
        • 按位逻辑运算符
          • 用法:掩码
            • 用法:打开位
              • 用法:关闭位(清空位)
                • 用法:切换位
                  • 用法:检查位的值
                    • 移位运算符
                      • 示例
                      • 位字段
                        • 示例
                          • 位字段和按位运算符
                          • 对齐特性(C11)
                          领券
                          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档