1 按位与置0、按位或置1,按位异或取反
#include <stdio.h>void printBinary(unsigned a){printf("\n%10u %X ",a,a);for(int i=31;i>=0;i--){if((i+1)%4 == 0)printf(" ");if((a>>i & 1) == 1)printf("1");elseprintf("0");}}void test(){unsigned data = https://www.juguize.com/b/0x12345678;// 305419896 // dec// 0001 0010 0011 0100 0101 0110 0111 1000 // binaryprintBinary(data);printf(" 原数据/n");unsigned mask = 0xFFFF0000;printBinary(mask);printf(" 掩码/n");unsigned a = data & mask;printBinary(a);printf(" 按位与&,后16位置0/n");unsigned b = data | mask;printBinary(b);printf(" 按位或|,前16位置1/n");unsigned c = data ^ mask;printBinary(c);printf(" 按位异或^,前16位取反/n");}int main(){test();getchar();return 0;}/* 305419896 123456780001 0010 0011 0100 0101 0110 0111 1000 原数据4294901760 FFFF00001111 1111 1111 1111 0000 0000 0000 0000 掩码 305397760 123400000001 0010 0011 0100 0000 0000 0000 0000 按位与&,后16位置04294923896 FFFF56781111 1111 1111 1111 0101 0110 0111 1000 按位或|,前16位置13989526136 EDCB56781110 1101 1100 1011 0101 0110 0111 1000 按位异或^,前16位取反*/2 按位运算与算术运算2.1 二进制无进位加法
按位异域
0
0
1
1
^
0
1
0
1
0
1
1
0
2.2 二进制加法的进位
按位与
0
0
1
1
&
0
1
0
1
0
0
0
1
2.3 整型乘除
2.3.1 整型与一个2的某次幂相乘
用移位实现乘除法运算
a=a<<3; // a=a*(2^3);
b=b>>3; // b=b/(2^3);
2.3.2 整型与一个非2的某次幂相乘
a = a<<3+a; // a=a*9→a=a*(a^3+1)
3 整型按位乘法
移位相加实现二进制乘法:
文章插图
移位、相加:
文章插图
10110011*1101 // 179*13
= 179<<0*1+179<<1*0+179<<2*1+179<<3*1
= 0000 0000 0000 0000 1001 0001 0111 //2327
4 整型按位除法
2进制完成除法运算就是移位相减,比如1011011除以1110(91/14)顺序如下:
被除数
1
0
1
1
0
1
1
除数左对齐
1
1
1
0
除数对齐到小于被除数的位置
被除数
1
0
1
1
0
1
1
1
1
1
0
商
1
0
0
余数
1
0
0
0
1
1
余数继续相除:
被除数
1
0
1
1
0
1
1
除数
1
1
1
0
商
1
0
0
余数
1
0
0
0
1
1
除数
1
1
1
0
商
1
1
0
余数
1
1
1
1011011 / 1110 = 110 + 111 // 91/14 = 6+7
1011011 = 1110 * 0000110 + 111 // 91 = 14 * 6 + 7
【置业顾问岗位职责置】-End-
推荐阅读
- 《光遇》晨岛光之翼的所有位置在哪里?
- 神位放在家里的什么位置好 神位放在家什么位置好
- 怎样设置u盘启动,华南金牌x79怎么设置u盘启动?
- 腰果放置时间久了还能吃吗
- 由于启动计算机时出现了页面配置问题,惠普笔记本提示应用程序无法启动,因为应用程序的并行配置不正确,是怎么回事?
- 取款密码忘了怎么重置 银行卡密码忘记了怎么办找回密码
- 二手闲置物品出售平台 二手交易平台有哪些
- 广汽传祺gs3有什么配置 广汽传祺gs3配置参数表
- 火车56号座是什么位置
- 2022年了mate40还值得购买吗 华为mate40参数配置详情