A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© dandan520 中级黑马   /  2014-12-15 23:02  /  2041 人查看  /  25 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

位运算符有谁懂的,请大神讲解

25 个回复

正序浏览
我来回答一下好了,说一个特性,一个数据对同一数据位运算两次,数据不变,借此可以用来交换两个数据,且不需要第三个变量;
a = a^b
b = a^b
a = a^b
就这样交换了a,b的值,面试的时候这样回答装下大神。
我很认真回答的了,纯手打
回复 使用道具 举报
冷风 中级黑马 2014-12-19 21:54:00
25#
不是有视频吗,视频这一块讲的挺简单的。
回复 使用道具 举报
左移,右移,无符号右移。位运算符--针对二进制的运算。         & 按位与            | 按位或          ^ 按位异或 :一个数对同一个数据^两次,结果还是这个数。         两个数的互换         a = a ^ b;         b = a ^ b;//a ^ b ^ b = a         a = a ^ b;//a ^ b ^ a = b         ~ 按位取反  原码  反码  补码               左移:向左移动几位就乘以2的几次幂,空位补零。         右移:向右移动几位就除以2的几次幂,最高位是什么补什么。         无符号右移:向右移动几位就除以2的几次幂,最高位不管是什么都补零。
回复 使用道具 举报
左移,右移,无符号右移。
回复 使用道具 举报
这么多,建议看毕老师的视频,慢慢理解!
回复 使用道具 举报
位运算符有与& | ^ ~ << >> >>>依次是与、或、抑或、按位取反,左移,右移
回复 使用道具 举报
本帖最后由 赵越海 于 2016-7-8 17:38 编辑

         .
回复 使用道具 举报
位运算符是对二进制数进行操作的运算符,计算机中的int类型等都是以补码的形式存在,计算也是操作他们的补码。好象是这样吧。
回复 使用道具 举报
对应数的  二进制左移右移,负数要变成补码移动
回复 使用道具 举报
我刚好看到,位运算符主要是操作二进制位的。方法上面的哥们说的很清楚了、
左移<<
右移>>
无符号右移>>>
与&
或 |
异或 ^
取反 ~
首先你的明白什么是二进制,10两个数表示的东西,然后1一个字节8个1或者0的数,4个字节的二进制数即32个1和0组成的数用这些位运算符号操作。搞明白这几个符号的意思,那么你就可以用他们操作这32个1或0组成的数字。比如说2进制转换成8进制,16进制,比运算节约空间有效率。也可以把两个数的数值交换。掌握好这些位运算符,那么就相当于加减乘除的算法,运用到自己以后的开发中。
总之,在搞明白变量,常量后,可以学习各种运算符,包括算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符和三元运算符。位运算符只是其中的一种
回复 使用道具 举报
dwy_hm 中级黑马 2014-12-18 21:52:05
16#
位运算操作的是二进制数据
回复 使用道具 举报
进来学习学习
回复 使用道具 举报
好好看视频吧, 这是哪技术分来的吧,哈哈
回复 使用道具 举报
Bali 发表于 2014-12-15 23:42
二进制中左右位移的过程,主要是填0的过程

这个有点吊,
回归正题位运算符包括了
&:按位与
|:按位或
^:异或
~:取反
<<:左移
>>:右移
>>>:无符号右移

其中的难点就是当数据在计算内部进行计算时  是以该数据的二进制补码进行的。
回复 使用道具 举报
来学习学习!
回复 使用道具 举报
位运算符不是重点,平时用的也不多,了解就行!
回复 使用道具 举报
kenhe 中级黑马 2014-12-16 21:35:09
10#
位运算  是针对二进制的
位运算符:
&:按位与
|:按位或
^:异或
~:取反
<<:左移
>>:右移
>>>:无符号右移
回复 使用道具 举报
位运算符:
&: 3&4 = 0;
计算方式:(&有假则假,1代表真,0代表假,就是有0则0);
00000011
00000100
-----------
00000000
|:3|4 = 7;
计算方式:(|有真则真,1代表真,0代表假,就是有1则1);
00000011
00000100
---------
00000111
^: 3^4: = 7;(在位运算中与|同理)
00000011
00000100
-----------
00000111
~:~-7 = 6;(连符号位在内,把得到的补码取反);
        10000111        -7的原码
        11111000        -7的反码
        00000001               
    ~        11111001        -7的补码
        ----------
        00000110        6
<<:空位补0,被移除的高位丢弃(左移运算,相当于乘法运算)
举例:
4<<2;(4X2^2)=16;
        000000100        4
     00        000010000        16
>>:被移位的二进制最高位是0,右移后,空缺位补0;
最高位是1,最高位补1。(右移运算相当于除法运算)
举例:
4>>2;(4/2^2)=1;
        000000100        4
        000000001 00        1
>>>:
-7>>>2;被移位二进制最高位无论是0或者是1,空缺位都用0补。
        10000000 00000000 00000000 00000111        -7
        11111111 11111111 11111111 11111000        -7的反码
+        00000000 00000000 00000000 00000001
---------------------------------------------
        00111111 11111111 11111111 11111110 01

回复 使用道具 举报
位运算符有与& | ^ ~ << >> >>>依次是与、或、抑或、按位取反,左移,右移。主要是用来对二进制位进行操作的,>>和>>都是右移运算符,差别就是>>>不论是负数还是正数右移后都是在最高为补0,而>>如果是正数右移后在最高为补0,负数则补1
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马