网站首页 / 旅游 / 正文

置(置业顾问岗位职责)

时间:2022-04-03 22:54:37 浏览:8次 作者:用户投稿 【我要投诉/侵权/举报 删除信息】

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"); else printf("0"); }}void test(){ unsigned data = 0x12345678; // 305419896 // dec // 0001 0010 0011 0100 0101 0110 0111 1000 // binary printBinary(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 12345678 0001 0010 0011 0100 0101 0110 0111 1000 原数据4294901760 FFFF0000 1111 1111 1111 1111 0000 0000 0000 0000 掩码 305397760 12340000 0001 0010 0011 0100 0000 0000 0000 0000 按位与&,后16位置04294923896 FFFF5678 1111 1111 1111 1111 0101 0110 0111 1000 按位或|,前16位置13989526136 EDCB5678 1110 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(***/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 // ***/14 = 6+7

1011011 = 1110 * 0000110 + 111 // *** = 14 * 6 + 7

-End-

版权声明:
本文内容由互联网用户自发贡献,该文观点仅代表作者本人,因此内容不代表本站观点、本站不对文章中的任何观点负责,内容版权归原作者所有、内容只用于提供信息阅读,无任何商业用途。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站(文章、内容、图片、音频、视频)有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至353049283@qq.com举报,一经查实,本站将立刻删除、维护您的正当权益。