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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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

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

25 个回复

倒序浏览
同求。。
回复 使用道具 举报
不给吃鸭梨 来自手机 中级黑马 2014-12-15 23:14:08
藤椅
建议要看下基础的关于运算符的东西了。
回复 使用道具 举报
位运算大致就是将其转化为二进制后,进行左(右)位数的移动,不够的补0
回复 使用道具 举报
二进制中左右位移的过程,主要是填0的过程
回复 使用道具 举报
有两种:无符号位移和有符号位移,老毕视频上说的很清楚啊
回复 使用道具 举报
        简而言之:因为数据在计算机中的存储方式是二进制的,而8个位构成一个字节。当我们现实生活中所接触的字符还是数字,我们如果理解了它在计算机中的存储方式,就可以直接在位上对其操作。说两点:
      1,当我们想计算5*8时,我们可以写     sum=5*8;      但采用位运算    sum=5<<3;   可以取得更高的效率。
      2,我们用^运算符,可以实现对数据的加密,5^9      0000 0101
                                                                               0000 1001
                                                                       结果  0000 1100         12
                                                                 再  ^9     0000 1001
                                                                               0000 0101           5
所以,底层的位操作明白了,理解一些运算,加密就明白了。希望对你有用。


回复 使用道具 举报
位运算符有与& | ^ ~ << >> >>>依次是与、或、抑或、按位取反,左移,右移。主要是用来对二进制位进行操作的,>>和>>都是右移运算符,差别就是>>>不论是负数还是正数右移后都是在最高为补0,而>>如果是正数右移后在最高为补0,负数则补1
回复 使用道具 举报
位运算符:
&: 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

回复 使用道具 举报
kenhe 中级黑马 2014-12-16 21:35:09
10#
位运算  是针对二进制的
位运算符:
&:按位与
|:按位或
^:异或
~:取反
<<:左移
>>:右移
>>>:无符号右移
回复 使用道具 举报
位运算符不是重点,平时用的也不多,了解就行!
回复 使用道具 举报
来学习学习!
回复 使用道具 举报
Bali 发表于 2014-12-15 23:42
二进制中左右位移的过程,主要是填0的过程

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

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

         .
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 加入黑马