0基础学习C语言第3章:位运算

 2024-02-21 01:06:51  阅读 0

C语言提供了六种位运算符:

& 按位与

|按位或

^按位异或

〜否定

> 右移,正数高位补0,负数由计算机决定

向左循环k次(x(32-k)),

向右循环 k 次 (x>>k) | (x 括号成员优先;//括号运算符[]()成员运算符。->

所有一元二度; //++、--、+(正)、-(负)等所有一元运算符,指针运算*、&乘除余数三,加减四; //这个“余数”指的是求余运算,即%

轮班五,关系六; //移位运算符:>,关系:> < >= >2

表示右移至(十进制 3)。

注意:对于有符号数,右移时,符号位也随之移动。 当为正数时,最高位填充0,当为负数时,符号位为1。

最高位补0还是1取决于编译系统的要求。 Turbo C 和许多系统指定补数为 1。

使用简单

1:交换两个数字(字符)。 您可以交换两个变量的值而不使用第三个变量:

使用异或^,原理:两次异或即可还原,即a = (a^b) ^ b

二:判断一个数是否是2的幂:

原理:2的幂的二进制表示中只有一位是1,其他位都是0

x = x&(x-1) 将x的二进制码最右边的1设置为0。如果结果为0,则说明x原本只有一位为1,其他位均为0。

bool (int x) { (x&(x-1)==0 && (x!=0)); }

bool (int x) { ( (x&-x)==x ); }

三:求一个整数有多少位为0:

原理与上面相同。 使用 x&(x-1)

=0;(x)3{4++计数;5x &= (x-1);6}

运算符号表示_c 运算符号怎么表示_运算符号表示什么意思

四:快速二进制求幂:

(intx, n){ =1; (n){4if(n &1) p *= x;5x *= x;6n >>=1;7 } p;9}

五:判断奇偶数:

原理:奇数最后一位为1,偶数最后一位为0

布尔奇数(int x) { x&1; }

bool 偶数(int x) { !(x&1); }

n%2 = n&1

n%4 = n&3

n%8 = n&7

……

六:求x的绝对值:

原理:x为正数时不改变; 当x为负数时,将其取反并加1。

运算符号表示什么意思_运算符号表示_c 运算符号怎么表示

当x为正数时,y = 0 = 0 0000

当x为负数时,y = -1 = 1 1111

与 0 异或为自身,与 1 异或为求反

(int x){2inty = x >>31;(x^yy);4}

七:对 2 的幂取模:

原理:x&y取出x和y的二进制1的所有位。 x^y>>1 取出只有一个二进制位1的x,y并除以2

(x&y) + (x^y)>>1);

请注意,当不使用位运算时,(x+y)/2 可能会导致溢出。

x 向上舍入为 y,其中 y=2^n(用于字节对齐):

# rund(x,y) ( ((x)+(y)-1)&~((y)-1) )

八:其他:

只有一个数 1 k &1 第 k 位为 1

x的第k+1个位置1:x >> k |(1 > k &~(1

标签: 运算 原理 高位

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码