按位运算符是怎么运算的?

按位运算符是怎么运算的?,第1张

首先,二进制与运算规则:1&1=1 1&0=0 0&0=0

二进制或运算规则:1|1=1 1|0=1 0|0=0

再:二进制与十进制转换:

不能打2的n次方,只好以例子讲解:

1111 1111=128*1+64*1+32*1+16*1+8*1+4*1+2*1+1*1

0000 0000=128*0+64*0+32*0+16*0+8*0+4*0+2*0+1*0

15=二进制: (0000 1111)

127=二进制:(1111 1111)

按位与自然就是(0000 1111)=15

128=二进制:(0001 0000 0000)

127=二进制:(0000 1111 1111) (高位用0补齐)

按位或 就是(0001 1111 1111)=255

回答补充:

二进制“与”运算规则:1&1=1 1&0=0 0&0=0

二进制“或”运算规则:1|1=1 1|0=1 0|0=0

按位与就是从高到低,逐位进行"与"运算

所以从高到低,15&127:

15=二进制: (0000 1111)

127=二进制:(1111 1111)

↓↓↓↓↓↓

0000 1111

注意: “与”运算规则:1&1=1 1&0=0 0&0=0

1、二进制转换为十进制

二进制数00111从低位到高位的位权依次是2的0次幂1、2的1次幂2、2的2次幂4、2的3次幂8、2的4次幂16。

理解了二进制计数的基数和位权,就可以进行数制转换了。00111如何转换成十进制计数呢?转换很简单,将二进制数从高位到低位每个数字乘以相应的位权然后求和就可以了。

00111(二进制)= 0 * 2^(5-1) + 0 * 2^(4-1) + 1 * 2^(3-1) + 1 * 2^(2-1) + 1 * 2^(1-1)

= 0 * 16 + 0 * 8 + 1 * 4 + 1 * 2 + 1 * 1

= 7(十进制)

2、十进制转换为二进制

十进制整数到二进制整数的转换可以采用“除2取余,逆序输出”法,

具体转换过程是,用2去除一个十进制数,得到商和余数,然后再用2去除商,又会得到商和余数,循环往复直至商为0为止。如果是十进制小数转二进制小数,则采用“乘2取整,顺序输出”。转换过程如下图所示:

3、二进制和八进制之间的转换

二进制转八进制:取三合一法,即从二进制的小数点为分界点,向左(向右)每三位取成一位,接着将这三位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的八进制数。

如果向左(向右)取三位后,取到最高(最低)位时候,如果无法凑足三位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足三位。

4、八进制转二进制:取一分三法,即将一位八进制数分解成三位二进制数,用三位二进制按权相加去凑这位八进制数,小数点位置照旧。

5、二进制和十六进制之间的转换

二进制转十六进制:取四合一法,即从二进制的小数点为分界点,向左(向右)每四位取成一位,接着将这四位二进制按权相加,然后,按顺序进行排列,小数点的位置不变,得到的数字就是我们所求的十六进制数。

如果向左(向右)取四位后,取到最高(最低)位时候,如果无法凑足四位,可以在小数点最左边(最右边),即整数的最高位(最低位)添0,凑足四位。

6、十六进制转二进制:取一分四法,即将一位十六进制数分解成四位二进制数,用四位二进制按权相加去凑这位十六进制数,小数点位置照旧。

7、十进制和八进制之间、十进制和十六进制之间都是先把十进制转换为二进制,然后在转换为八进制或者十六进制。

扩展资料

某进制计数制允许选用的基本数字符号的个数成为基数。一般来说,N进制的基数为N,可进行选用的基本数字符号有N个,分别为0到N-1。

比如十六进制的基数为16,可供选择的基本数学符号为0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F十六个。

位权是指,该进位制中每一固定位置对应的单位值,简称为权。

以十进制计数制来说,计数单位分别为个位、十位、百位、千位、万位、十万位……,其中个位数表示数值1、十位数表示数值10、百位数表示数值100、千位数表示数值1000、……,每个位数表示的数值叫位权。

位权通过计算基数的n-1次幂就可以得到,这里的n是指位数所在数字中的位置。在十进制中就是10的(n-1)次幂。

例如,对十进制数1260来说,个位数是1260的第一个数字,因此n为1;十位数是第二个数字,因此n为2;百位数是第三个数字,因此n为3;千位数是第四个数字,因此n为4。

由此,个位数的位权为10的1-1次幂是1,十位数的位权为10的2-1次幂是10、百位数的位权为10的3-1次幂是100、千位数的位权为10的4-1次幂是1000。

1260 = 1 * 10^(4-1) + 2 * 10^(3-1) + 6 * 10^(2-1) + 0 * 10^(1-1)

= 1 * 1000 + 2 * 100 + 6 * 10 + 0 * 1

= 1000 + 200 + 60 + 0

参考资料来源:百度百科-进制

位运算符有哪些?

位运算符都是 *** 作的二进制

用法

&,|,^,~ 的用法

&:有0则0

|:有1则1

^:相同则0,不同则1

~:按位取反

例:

分析:

上面这些运算符会将数字转换成2进制再进行运算。6的二进制是110,3的二进制是011。根据上面的用法规则里面,列几个竖式:

00000000 00000000 00000000 00000110 6的原码反码补码都是本身

11111111 11111111 11111111 11111001 对6取反,得到-7的补码

00000000 00000000 00000000 00000001补码减1

——————————————————————————

11111111 11111111 11111111 11111000 反码

10000000 00000000 00000000 00000111 原码(-7)

小练习

1、请实现两个整数变量的交换(不能使用第三方变量)

2、最有效率的算出2 * 8的结果

答案分析

1、实现两个整数变量的交换很简单,但是这道题目却明确指出不能使用第三方变量。有两种方法。

方法一:

方法一有个缺点,如果数值超出了int类型的取值范围,将会损失精度

方法二:

2、直接 *** 作二进制是比较快的,所以使用左移符号

System.out.println(2 <<3)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/yw/9033602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-24
下一篇 2023-04-24

发表评论

登录后才能评论

评论列表(0条)

保存