
C语言学习笔记——位运算
234 ÷ 8 = 29余2 29 ÷ 8 = 3余5 3 ÷ 8 = 0余3逆序排列为
发布日期:2021-05-17 07:35:15
浏览次数:20
分类:精选文章
本文共 1356 字,大约阅读时间需要 4 分钟。
C语言学习笔记:位运算与进制
进制
编程中的进制通常有三种常用形式:二进制、十进制和十六进制。
- 十进制是我们熟悉的日常计算方式,数字范围为0-9。
- 十六进制常用于表示较大的数字,通常以字母A-F表示10-15。例如,0xA表示10,0xF表示15。十六进制数前缀通常为0x或0X,字母大小写不敏感。
- 二进制是计算机内部存储数据的基本方式,只有0和1两种数字。
三种进制之间的转换主要采用基数相加法和反转取余法。在实际操作中,两种方法常结合使用。
基数相加法
十进制与十六进制转换示例:
将0xAB2
转换为十进制:[2 \times 16^0 + B \times 16^1 + A \times 16^2]将0235(8)
转换为十进制:[5 \times 8^0 + 3 \times 8^1 + 2 \times 8^2]将0xAB2
转换为八进制:[2 \times 20^0 + 13 \times 20^1 + 12 \times 20^2]
反转取余法
十进制与八进制转换示例:
将234
转换为八进制:
351
。将0xAB2
转换为八进制前需先转换为十进制,再进行反转取余。
十、十六、两进制相互转换
- 十进制与十六、八进制:反转取余法和基数相加法。
- 二进制与八、十六进制:二进制位数与八进制位数的关系:
- 每四位二进制组成一个十六进制位。
- 每三位二进制组成一个八进制位。
例如,二进制数1010011100001
:
- 十六进制:
AE1
(取每四位)。 - 八进制:
012311
(取每三位)。
位运算符
按位取反运算符
运算符~
表示对二进制进行补码运算:
~1 == 0
(二进制全1取反后为0)。~0 == 1
(二进制全0取反后为1)。
整数存储采用补码表示法:
- 正数的补码是其本身。
- 负数的补码是对二进制进行取反后加1。
按位或、按位与运算符
- 按位或运算符
|
:1 | 1 == 1
1 | 0 == 1
0 | 0 == 0
- 按位与运算符
&
:1 & 1 == 1
1 & 0 == 0
0 & 0 == 0
这些运算符与逻辑运算符&&
和||
功能相似。
按位异或运算符
运算符^
:
1 ^ 1 == 0
0 ^ 0 == 0
1 ^ 0 == 1
浮点型无法直接使用,需通过联合体或强转换后操作。
移位运算符
- 左移
<<
和右移>>
:- 移动二进制位,移出位删除,移入位补0。
- 负数右移可能行为不定,需谨慎使用。
位字段
位字段用于对特定位进行操作,适合低层控制。
struct Bit { int b8:1; // 第8位 int b7:1; int b6:1; int b5:1; int b4:1; int b3:1; int b2:1; int b1:1;} B;
- 成员类型:
int
或unsigned int
。 - 小端存储:b8是右边第一位。
- 操作示例:
B.b8 = 1
设置最右边第一位为1。B.b3 = 3
会报错,系统自动修正为1。
总结
位运算是C语言中的基础知识,理解其原理和应用是编程的重要基础。通过位运算符和位字段,可以灵活控制数据的二进制形式,优化程序性能。
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2025年05月05日 19时24分39秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
常用快捷键等
2019-03-14
MySQL(九)SQL优化
2019-03-14
Django认证系统
2019-03-14
Flask视图进阶
2019-03-14
linux select函数 写一个服务器,转发数据
2019-03-14
QT for MCU (一)开始
2019-03-14
机器学习全教程
2019-03-14
ubuntu配置环境变量(变量不重复)
2019-03-14
ubuntu 18.04LTS + MATLAB2018b启动opengl 硬件加速
2019-03-14
关于JS的数据类型
2019-03-14
JAVA经典算法40题(3)
2019-03-14
idea在连接mysql数据库时区错误
2019-03-14
springboot中访问static下的图片没反应
2019-03-14
PHP文件域上传文件
2019-03-14
阿里云服务器建站——centos7部署apache+mysql+php
2019-03-14
虚拟机安装centos7无法联网问题
2019-03-14
2021-05-14
2019-03-14
2021-05-15
2019-03-14
PHP入门笔记--include和require
2019-03-14
Java IO整理总结之字符流
2019-03-14