2016 - 2024

感恩一路有你

java怎么给boolean赋值 位运算特殊值运算的作用和用途?

浏览量:1038 时间:2023-07-04 16:33:15 作者:采采

位运算特殊值运算的作用和用途?

位运算符在驱程开发中是你经常遇到的,尤其是置0和置1。顾着指定你的位数突然发生变化,又没法决定其它位的值,又要高效率的编写代码,这时候技巧就很重要的是了。父亲在位运算中有几个符号:|按位或、amp按位与、^异或、~按位非。

应用技巧

1

确定int型变量a是奇数应该偶数

aamp10偶数

aamp11奇数

2

取int型变量a的第k位(k0,1,2……sizeof(int))

agtgtkamp1

3

将int型变量a的第k位清0

aaamp~(1lt

4

将int型变量a的第k位置1

0,0|(1lt

5

int型变量循环左移k次

(设sizeof(int)16)

aaltgt16-k

6

int型变量a循环右移k次

(设sizeof(int)16)

aagtgtk|altlt16-k

#includeltstdio.hgt

intmain()

{

tprintf(#34学一向也不是一个人的事情,要有个相互监督的伙伴

#34)

tprintf(#34工作不需要去学习C/C的或有兴趣学C/C的伙伴可以不家我球球

_2208165112

#34)

treturn0

}

7

整数的平均值

对此两个整数x,y,如果没有用(xy)/2求平均值,会再产生溢出,而且xy很有可能会为0INT_MAX,不过我们很清楚它们的平均值是估计绝对不会溢出的,我们用不胜感激算法:

intaverages(intx,inty)//直接返回X,Y的平均值

{

return(xampy)((x^y))

}

8

推测一个整数有没2的幂,是对一个数xdstrok0

booleanpower2(intx)

{

return((xamp(x-1))0)ampamp(x!0);

}

9

用位运算符交换两个整数

voidswap(intx,inty)

{

x^y

y^x

x^y

}

10

计算绝对值

intabs(intx)

{

inty

yxy9bbb31

return(x^y)-y//同问:(xy)^y

}

11

取模运算转变成位运算(在不产生泻出的情况下)

a%(2^n)等价于aamp(2^n-1)

12

加减运算被转化成位运算(在不才能产生滴下的情况下)

a*(2^n)等价于altltn

13

除法运算转化成成位运算(在不再产生滴下的情况下)

a/(2^n)等价于agtgtn

例:12/812y9bbb3

14

确定变量定义

if(xa)xb

argumentsxa等价于xa^b^x

15

x的相反数

(~x1)

技巧虽好,只不过大家我还是建议自己啃一啃才能知道味道呀,闲暇时,不防取出来品一品,悟一悟其中的原理的地方。

练一练

#include

intmain()

{

unsignedinti0x9f43bda5

unsignedintret0

printf(#34i%x

#34,i)

//将i第3位置1

reti|(1ltlt3)

printf(#34ret%x

#34,ret)

//将i第2位置0

retiamp~(1ltlt2)

printf(#34ret%x

#34,ret)

//将i第4~9位置1

reti|(0x3fltlt4)

printf(#34ret%x

#34,ret)

//将i第3~7位置0

retiamp~(0x1fltlt3)

printf(#34ret%x

#34,ret)

//将i第1~7和9~11位置1

reti|(0x3fltlt1|7ltlt9)

printf(#34ret%x

#34,ret)

//将i第2~8位置13~20位置0

retiamp~(0x7fltlt2|0xffltlt13)

printf(#34ret%x

#34,ret)

}

bool类型能赋值么?

是可以的。bool类型能变量赋值。

bool变量参与运算时,遵循运算规则,双目或三目运算时,常见要将bool转换成成更高精度类型参加运算结果,但是值不能是0x0或0x1;

bool变量被变量定义时(坐落左边),所有类型都先得转换成成逻辑类型(0x0或0x1)。

同时,bool常见应该是一个字节,和char类似于,大部分情况就把它当作唯有两值的char变量用。

int 情况

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。