C语言位操作
来源:互联网 发布:在淘宝上做虚拟充值 编辑:程序博客网 时间:2024/06/15 08:52
一. 位操作运算符:
1. 按位与&: 有0则0, 全1为1.
格式: 数1&数2; 如:5&4=4;
使用: (1). 清零特定位.
(2). 取某数中的指定位.
2. 按位或 |: 有1则1, 全0为0.
格式: 数1 | 数2; 如: 10 | 5 = 15;
使用: 将操作数某些位 置为1, 其他位不变.
3. 异或^: 参与运算的两数各对应的近位异或, 当对应的二进制位值相异时为1, 否则为0(相同为0, 不同为1).
格式: 数1^数2; 如: 10^5=15;
使用: (1). 使特定位的值取反.
(2). 不引入第三变量, 交换两个变量的值.
(3). 与0异或保留原值, 与1异或取反.
(4). 与自身相异或, 则全部清零, 如: a^a;
4. 左移运算 << : 把”<<”左边的运算数的各二进位全部左移n位, 高位丢弃, 低位补0.
int a=0;
a=a<<2; <==> a=a*4;
使用: 左移一位相当于*2, 效率比”*”更加高.
5. 右移运算 >>: 把“>>” 左边的运算数的各二进制全部右移n位, 低位丢弃.
使用: 相当于 /2, 效率比”/”更高.
二. 位运算模板: 对一个int类型的整数最后四位清零.
16位: a & 0xF0;
32位: a & 0xFFF0;
三. 其他:
1. 把一个16位的整数的各个位数求和, 每4位为一个数, 用函数写出来.
void Show()
{
int i=0;
int nNum=0001 1100 1010 0101;
int nTemp=0;
for(i=0;i<4;++i)
{
nTemp=nNum& 0x000F;
nNum+=nTemp;
nNum=nNum>> 4;
}
}
2. 浮点数存储格式:
如: 20.5
①. (20.5)5 = (10100.1)2;
※ 小数部分如何存: 0.5*2=1.0; 1拿出来保存.
为什么小数没有精确度: 拿0.3如何保存来举例.
0.3*2=0.6; 0拿出来保存, 剩下0.6.
又回到了0.6一直做这种循环运算
0.6*2=1.2; 1拿出来保存, 剩下0.2.
0.2*2=0.4; 0拿出来保存, 剩下0.4.
0.4*2=0.8; 0拿出来保存, 剩下0.8.
0.8*2=1.6; 1拿出来保存, 剩下0.6.
②. 10100.1 ==> 1.01001*24;
③. 4+127=131;
④. 131 ==> 10000011; (二进制)
⑥. 0 + 10000011 + 0100 + 0000 ……(补齐位数)
转成16位进制得出结果为: 41 +A4+ 00+ 00…
- C语言 位操作
- C语言位操作
- C语言位操作
- C语言位操作
- C语言位操作
- C语言位操作
- c语言位操作
- C语言位操作
- c语言位操作
- C语言-位操作
- C语言位操作
- C语言位操作
- C语言位操作
- C语言位操作
- c语言位操作
- C语言 位操作
- C语言位操作
- C语言位操作
- 当没有网络时候设置一个窗体
- windows 桌面/desktop 及 MessageBox(MB_TOPMOST)
- UIButton 内容对齐方式
- Xamarin.Forms相关文章
- MVC3学习:实现文章上一篇下一篇链接
- C语言位操作
- 3、垃圾收集器与内存分配策略
- Android仿Win10计算器设计
- [CentOS]安装软件:/lib/ld-linux.so.2: bad ELF interpreter解决
- java编程、java学习:深刻理解Java编程的7个例子
- 《CSS权威指南》学习记录——定位(一)
- C语言枚举和联合
- userAgent判断客户端类型
- C语言文件