当前位置:首页 > 科技 > 正文内容

位移运算(移位运算符)

2022-06-18 11:58:00科技511

大家好,今天就和毛毛一起来看看这个问题吧 。移位运算符,位移运算很多人还不知道,现在让我们一起来看看吧!

1、 位操作可以分为

位移运算(移位运算符)

2、 有三种运算符:左移运算符()、有符号右移运算符()和无符号右移运算符()。

3、 左移运算符():

4、 Value num value指定移动的值num指定移动的位数。

5、 操作规则:

6、 根据运算符右侧指定的位数将左操作数左移(高位去掉,低位用0填充);

7、 eg:

8、 二-十进制

9、 0000 1001 - 9

10、 91

11、 001 0010-18(去掉最高位,最低位加0,这是下面数学意义上的第一点)

12、 当左移的操作数类型为int时,每移动一位,它的第31位将被移除(位数从第0位开始);

13、 当左移的操作数是long类型时,每移动一位,它的第63位将被删除;

14、 当左边的操作数为byte和short时,则转换为int,结果为int。

15、 在向左移动的过程中,正数可能向负数移动,负数也可能向正数移动。

16、 数学意义:

17、 在没有数字溢出的前提下,左移1位相当于乘以2的1次方,左移n位相当于乘以2的n次方。

18、 举例:以-101(int类型)为例。负数在计算机中是以补码的形式存储的,所以移位运算也是基于补码的。

19、 -101计算机中的存储

20、 源代码1000000000000000000000000001100101

21、 反代码11111111111111111111111111110011010

22、 互补码1111111111111111111111111111110011011

23、 由补码可知,向左移动到第25、26、29位时-101变成正数。以下程序用于解释:

24、 图1

25、 结果:

26、 图二

27、 “有符号”右移位运算符():

28、 Value num value指定移动的值num指定移动的位数。

29、 操作规则:

30、 根据运算符右侧指定的位数,将运算符左侧的操作数向右移动(符号扩展机制);

31、 通过扩展将符号移位,即如果符号为正,则在高位插入0,如果符号为负,则在高位插入1(符号位不变);

32、 当左边的操作数为byte和short时,则转换为int,结果为int。

33、 数学意义:

34、 右移1位相当于除以2,右移n位相当于除以2的n次方。

35、 示例:-101(int类型32位)

36、 -101右移2位存储器分析

37、 源代码1000,000,000,000,000,000,000,010,0101反转-

38、 逆码1111,1111111,111111,111111,1111001,1010加1-

39、 补码1111,1111111,111111,111111,1111001,10112-

40、 移位后补码1111,1111111,1111111,111110,0110减1-

41、 代码1111、1111111、111111、111111、111110、0101被颠倒-

42、 源代码1000,000,000,000,000,000,000,000,001,1010十进制:-26

43、 值得注意的是,无论是正偶数还是负偶数,都是右移一位,直接是除法的结果,而对于正奇数,则是除以2,四舍五入的结果。

44、 对于负奇数,结果除以2并向上取整。下表:

45、 负数

46、 偶数(60)直接除以2(30)直接除以2(-30)

47、 奇数(61)除以2并向下舍入(30)除以2并向上舍入(-31)

48、 无符号右移位运算符()

49、 Value num value指定移动的值num指定移动的位数。

50、 操作规则:

51、 根据运算符右侧指定的位数,将运算符左侧的操作数向右移动(0扩展机制);

52、 在移位的过程中,无论数值是正还是负,最高位加0。

53、 仅对32位和64位值有意义。

54、 《java的思考》中有这样一句话:

55、 只有值右端的低5位是有用的,这可以防止我们移位超过int值的位数。(因为2的5次方是32,而int类型只有32位)如果处理一个long类型值,最后的结果也是long类型,只有值右端的低6位会用来防止移位超过long类型值的位数。

56、 换句话说,如果移动的位数超过了该类型的最大位数,编译器对移动的位数取模。例如,如果int类型被移位33位,那么实际上只有332=1位被移位。具体是(int ab)。如果移位超过数值类型的最大位数,B将被转换为二进制数,即lo

57、 注意:移位操作符中没有“无符号”左移这种东西。

58、 位移运算算子适用于很多场景,可以提高运行速度。与直接操作相比,位移运算算子大大提高了运行速度。因此,在日常生活中键入代码时,可以适当使用位移运算符号。

这篇文章到此就结束,希望能帮助到大家。

扫描二维码推送至手机访问。

版权声明:文章内容摘自网络,如果无意之中侵犯了您的版权,请联系本站,本站将在3个工作日内删除。谢谢!

本文链接:http://www.xixia168.cn/n/kj/35345.html

标签: 位移运算符
分享给朋友:

“位移运算(移位运算符)” 的相关文章

中国朝代顺序时间完整表(中国朝代时间表)

中国朝代顺序时间完整表(中国朝代时间表)

大家好,今天就和大牛一起来看看这个问题吧 。中国朝代时间表,中国朝代顺序时间完整表很多人还不知道,现在让我们一起来看看吧!  一、中国朝代时间表  中国历史朝代顺序:夏、商、西周、东周、秦、西汉、东汉、三国(曹魏、蜀汉、东吴)、西晋、东晋、五胡十六国、南朝(宋、齐、梁、陈)、北朝(北魏、东魏、北齐、...

秦始皇称帝时间在什么时候(秦始皇在位了多少年)

秦始皇称帝时间在什么时候(秦始皇在位了多少年)

大家好,今天就和蜜蜜一起来看看这个问题吧 。秦始皇在位了多少年,秦始皇称帝时间在什么时候很多人还不知道,现在让我们一起来看看吧!  一、  秦始皇在位了多少年  秦始皇总共在位三十七年的时间,他从公元前246年继承秦王王位开始,一直到公元前221年这段时间,秦始皇只是秦国的秦王,公元221年他才正式...

不惑之年是指哪个年龄(人不惑之年是指多少岁)

不惑之年是指哪个年龄(人不惑之年是指多少岁)

大家好,今天就和小鱼一起来看看这个问题吧 。人不惑之年是指多少岁,不惑之年是指哪个年龄很多人还不知道,现在让我们一起来看看吧!  一、  人不惑之年是指多少岁  不惑之年指的是四十岁,意思是遇事能明辨不疑。因为其源于孔子所说的“吾十有五而志于学,三十而立,四十而不惑,五十而知天命,六十而耳顺,七十而...

三八妇女节必须放假吗(妇女节放假半天是法定吗)

三八妇女节必须放假吗(妇女节放假半天是法定吗)

大家好,今天就和小鱼一起来看看这个问题吧 。妇女节放假半天是法定吗,三八妇女节必须放假吗很多人还不知道,现在让我们一起来看看吧!  一、  妇女节放假半天是法定吗  三八妇女节放假半天是法定假。根据《全国年节及纪念日放假办法》其中第三条规定,三八妇女节是部分公民放假的节日,妇女放假半天。因此妇女节放...

端午节最简短的来历(端午节的传说简短)

端午节最简短的来历(端午节的传说简短)

大家好,今天就和毛毛一起来看看这个问题吧 。端午节的传说简短,端午节最简短的来历很多人还不知道,现在让我们一起来看看吧!  一、端午节的传说简短一:  战国时,楚国大夫屈原因苦劝楚王无果,忧愤投江自尽。楚国百姓怀念这位为人清正的大夫,于是将糯米包成包投入江中,希望鱼群吃了米而不吃屈原尸身。后世延续为...

为什么三月三要煮鸡蛋(三月三煮鸡蛋的来历)

为什么三月三要煮鸡蛋(三月三煮鸡蛋的来历)

大家好,今天就和兔兔一起来看看这个问题吧 。三月三煮鸡蛋的来历,为什么三月三要煮鸡蛋很多人还不知道,现在让我们一起来看看吧!    三月三煮鸡蛋的来历源于古代楚地人们因为风吹雨打,头痛病很常见。三月初三,神农路过云梦泽(今孝感),见乡民头疼难耐,他找来野鸡蛋和地菜,煮给人们充饥。当人们吃了以后,头不...