首页 > 编程知识 正文

c语言 位运算 二进制转十进制,二进制怎么做与运算

时间:2023-05-03 12:37:46 阅读:50734 作者:4904

逻辑运算又称布尔运算布尔运算,利用数学方法研究逻辑问题,成功地进行了逻辑运算。 他用等式表示判断,把推理看作等式的变换。 该变换的有效性不依赖于符号的解释,而仅取决于符号的组合规则。

学习数据结构知识经常使用逻辑运算,因此再次巩固这一知识,减少学习数据结构等其他知识的障碍。

1 .基本概念

常数和变量:逻辑常数只有0和1两个,表示对立的两个逻辑状态。 逻辑变量与常规代数一样,也可以用字母、符号、数字及其组合来表示,但逻辑常数的可能值有0和1两种,没有中间值,因此有本质的区别。

逻辑运算(逻辑运算)逻辑代数有and、or、非三个基本逻辑运算。 表示逻辑运算的方法有句子记述、逻辑代数式、真值表、卡诺图等各种各样。

2.java逻辑运算符和位运算符

2.1 .逻辑运算符

运算符:“与”、“或”||、“非逻辑”! ’,异或’^’,逻辑积’,逻辑和’|’

逻辑运算真值表:下面的or=||和wor=|

a

B

AB

A或B

! a

A^B

AB

A wor B

假的

假的

假的

假的

真的

假的

假的

假的

真的

假的

假的

真的

假的

真的

假的

真的

假的

真的

假的

真的

真的

真的

假的

真的

真的

真的

真的

真的

假的

假的

真的

真的

a和b是逻辑运算的两个逻辑变量

两个逻辑与(和) )的运算规则基本相同,两个逻辑或(|和) )的运算规则也基本相同。

和|运算计算完所有逻辑表达式,而和||运算具有短路计算功能。

对于,如果左侧条件为false,则还计算右侧条件的值;而对于,如果左侧条件为false,则不计算右侧条件。 这种现象称为短路现象。

短路计算是指系统从左向右进行逻辑表达式计算,计算结果确定后,计算过程结束。

因为对于运算,如果运算符左端的值为false,则无论运算符右端的值是true还是false,最终结果都为false。

因此,当系统判断为运算符左端的值为false时,之后的计算过程结束;

对于||运算,这是因为如果运算符左端的值为true,则最终结果为true,无论运算符右端的值是true还是false。

因此,如果系统判断||运算符左端的值为true,则系统结束以后的计算过程。

利用短路现象:

和||运算符在编程时使用。 不建议使用和|运算符。

注意:如果异或相同,则为false;相反,则为true。

2.2 .位运算符

位运算符)位和’、位或’|’、位非’~’、异或’^’、右移位’、左移位’’

位运算的位和’、位或’|’、位非’~’、位异或’^’与逻辑运算的对应操作的真值表完全相同,其区别在于位运算操作的操作数和运算结果都是二进制整数,而逻辑运算的对应操作的操作

运算规则,下一个or=|和wor=|

a

B

AB

A wor B

A^B

0

0

0

0

0

1

0

0

1

1

0

1

0

1

1

1

1

1

1

0

简而言之

:和运算。 只有同一张照片的时候是真的,接近乘法。

|:或运算。 只有在相同的假的情况下才为假,接近加法。

^:异或运算。 同是假的,不同的是真的。

位运算符的说明,下面的or=|和wor=|

运算符

名字

样品

说明

amp

;

位与

x&y

把x和y按位求与

wor

位或

x wor y

把x和y按位求或

~

位非

~x

把x按位求非

^

位异或

x^y

把x和y按位求异或

>>

右移

x >> y

把x的各位右移y位

<<

左移

x << y

把x的各位左移y位

>>>

右移

x >>> y

把x的各位右移y位,左边填0

下边为位&运算:

int a = 15; //x等于二进制数的00001111

int b = 6; //y等于二进制数的00000110

int c = x&y //z等于二进制数的00000110

结果为: 二进制数的00000110

右移是将一个二进制数按指定移动的位数向右移位,移掉的被丢弃,左边移进的部分或者补0(当该数为正时),或者补1(当该数为负时)。这是因为整数在机器内部采用补码表示法,正数的符号位为0,负数的符号位为1。

将一个数左移”<

将一个数右移>>”会使该值除以2的幂。

右移(补零)运算符,即无符号右移,”>>>”永远不会产生负号,因为其符号位总是被补零。 不论被移动数是正数还是负数,左边移进的部分一律补0。

1

2

3

4

5

6

7

8

9

10

111<<3 = 8

8>>3 = 1

int x = 70; //x等于二进制数的01000110

int y = 2;

int z = x>>y //z等于二进制数的00010001

即运算结果为z等于二进制数00010001,即z等于十进制数17。

int x = -70; //x等于二进制数的11000110

int y = 2;

int z = x>>y //z等于二进制数的11101110

即运算结果为z等于二进制数11101110,即z等于十进制数-18。

右移和左移操作,是整数机器数的补码表示法。

&运算符规定必须信号A和B都被充电,其结果才是充电。(1表示充电,0表示未充电)

|运算符规定只要信号A或B被充电,输出结果就是充电。

^异或(XOR)运算符规定如果信号A或B之一被充电,但是信号A和B不是同时被充电,则结果为充电。

~运算符也称为按位求补,它翻转所有的充电状态值。

想了解更多技术文章信息,请继续关注wiliam.s Blog,谢谢,欢迎来访!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。