黑马程序员技术交流社区
标题:
位运算符是啥
[打印本页]
作者:
dandan520
时间:
2014-12-15 23:02
标题:
位运算符是啥
位运算符有谁懂的,请大神讲解
作者:
7788665544
时间:
2014-12-15 23:10
同求。。
作者:
不给吃鸭梨
时间:
2014-12-15 23:14
建议要看下基础的关于运算符的东西了。
作者:
取名回忆的时光
时间:
2014-12-15 23:25
位运算大致就是将其转化为二进制后,进行左(右)位数的移动,不够的补0
作者:
Bali
时间:
2014-12-15 23:42
二进制中左右位移的过程,主要是填0的过程
作者:
青衫禅客
时间:
2014-12-15 23:50
有两种:无符号位移和有符号位移,老毕视频上说的很清楚啊
作者:
极光_CDY
时间:
2014-12-16 16:45
简而言之:因为数据在计算机中的存储方式是二进制的,而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
所以,底层的位操作明白了,理解一些运算,加密就明白了。希望对你有用。
作者:
清诗纪事
时间:
2014-12-16 18:34
位运算符有与& | ^ ~ << >> >>>依次是与、或、抑或、按位取反,左移,右移。主要是用来对二进制位进行操作的,>>和>>都是右移运算符,差别就是>>>不论是负数还是正数右移后都是在最高为补0,而>>如果是正数右移后在最高为补0,负数则补1
作者:
zw937820438
时间:
2014-12-16 21:28
位运算符:
&: 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
位运算 是针对二进制的
位运算符:
&:按位与
|:按位或
^:异或
~:取反
<<:左移
>>:右移
>>>:无符号右移
作者:
擒贼先擒王
时间:
2014-12-16 21:40
位运算符不是重点,平时用的也不多,了解就行!
作者:
yl82846094
时间:
2014-12-16 21:41
来学习学习!
作者:
Mydream524
时间:
2014-12-18 06:44
Bali 发表于 2014-12-15 23:42
二进制中左右位移的过程,主要是填0的过程
这个有点吊,
回归正题位运算符包括了
&:按位与
|:按位或
^:异或
~:取反
<<:左移
>>:右移
>>>:无符号右移
其中的难点就是当数据在计算内部进行计算时 是以该数据的二进制补码进行的。
作者:
小马范
时间:
2014-12-18 08:39
好好看视频吧, 这是哪技术分来的吧,哈哈
作者:
zzy1990
时间:
2014-12-18 09:34
进来学习学习
作者:
dwy_hm
时间:
2014-12-18 21:52
位运算操作的是二进制数据
作者:
woshihuoye
时间:
2014-12-18 22:23
我刚好看到,位运算符主要是操作二进制位的。方法上面的哥们说的很清楚了、
左移<<
右移>>
无符号右移>>>
与&
或 |
异或 ^
取反 ~
首先你的明白什么是二进制,10两个数表示的东西,然后1一个字节8个1或者0的数,4个字节的二进制数即32个1和0组成的数用这些位运算符号操作。搞明白这几个符号的意思,那么你就可以用他们操作这32个1或0组成的数字。比如说2进制转换成8进制,16进制,比运算节约空间有效率。也可以把两个数的数值交换。掌握好这些位运算符,那么就相当于加减乘除的算法,运用到自己以后的开发中。
总之,在搞明白变量,常量后,可以学习各种运算符,包括算术运算符,赋值运算符,比较运算符,逻辑运算符,位运算符和三元运算符。位运算符只是其中的一种
作者:
HiloFeng
时间:
2014-12-18 22:36
对应数的 二进制左移右移,负数要变成补码移动
作者:
7788665544
时间:
2014-12-18 22:41
位运算符是对二进制数进行操作的运算符,计算机中的int类型等都是以补码的形式存在,计算也是操作他们的补码。好象是这样吧。
作者:
赵越海
时间:
2014-12-18 22:46
本帖最后由 赵越海 于 2016-7-8 17:38 编辑
.
作者:
shuoshuo
时间:
2014-12-19 00:01
位运算符有与& | ^ ~ << >> >>>依次是与、或、抑或、按位取反,左移,右移
作者:
x277402301t
时间:
2014-12-19 00:41
这么多,建议看毕老师的视频,慢慢理解!
作者:
960943877
时间:
2014-12-19 01:03
左移,右移,无符号右移。
作者:
960943877
时间:
2014-12-19 01:11
左移,右移,无符号右移。位运算符--针对二进制的运算。 & 按位与 | 按位或 ^ 按位异或 :一个数对同一个数据^两次,结果还是这个数。 两个数的互换 a = a ^ b; b = a ^ b;//a ^ b ^ b = a a = a ^ b;//a ^ b ^ a = b ~ 按位取反 原码 反码 补码 左移:向左移动几位就乘以2的几次幂,空位补零。 右移:向右移动几位就除以2的几次幂,最高位是什么补什么。 无符号右移:向右移动几位就除以2的几次幂,最高位不管是什么都补零。
作者:
冷风
时间:
2014-12-19 21:54
不是有视频吗,视频这一块讲的挺简单的。
作者:
黑马-李权88
时间:
2014-12-19 23:38
我来回答一下好了,说一个特性,一个数据对同一数据位运算两次,数据不变,借此可以用来交换两个数据,且不需要第三个变量;
a = a^b
b = a^b
a = a^b
就这样交换了a,b的值,面试的时候这样回答装下大神。
我很认真回答的了,纯手打
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2