位移传感器(位移)

09-16 游戏 投稿:袁芊芊
位移传感器(位移) 2023-09-15 08:02:40 导读 你们好,最近小极发现有诸多的小伙伴们对于位移传感器,位移这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。1、位操作...

你们好,最近小极发现有诸多的小伙伴们对于位移传感器,位移这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、位操作可以分为

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

3、左移运算符():

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

5、操作规则:

6、根据运算符右边指定的位数,将左边的操作数向左移动(除以高位位移,低位加0);

7、eg:

8、二-十进制

9、 0000 1001 ---- 9

10、 91

11、0001 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、源代码1000000000000000000000000000000001100101

21、反代码1111111111111111111111111111001111010

22、补语111111111111111111111110011111111111111111111111111111111

23、根据补码,当向左移动到25、26和29位时,-101变成正数,这由下面的程序解释:

24、 图一

25、结果:

26、 图二

27、“有符号”右移操作符():

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

29、运算规则:

30、按照操作符右侧指定的位数将操作符左边的操作数向右移动(采用符号扩展机制);

31、符号扩展进行移位,即:若符号为正,则在高位插入0,若符号为负,则在高位插入1(符号位保持不变);

32、当左边的操作数为byte、short类型时,它们会被转换为int类型,其结果要是int类型。

33、数学意义:

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

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

36、 -101右移2位内存分析

37、源码1000,00000000,00000000,00000110,0101取反-----

38、反码1111,11111111,11111111,11111001,1010加1 -----

39、补码1111,11111111,11111111,11111001,10112-----

40、移位后迅召补码1111,11111111,11111111,11111110,0110减1-----

41、反码1111,11111111,11111111,11111110,0101取反-----

42、源码1000,00000000,00000000,00000001,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、在Thinking in java 中有这么一句话:

55、只有数值右端的低5位才有用,这样可以防止我们移位超过int型值所具有的位数。(因为2的5次方为32,而int类型只有32位)若对一个long类型的数值进行处理,最后得到的结果也是long类型,

56、此时只会用到数值右端的低6位,以防止移位超过long型数值具有的位数

57、换言之,如果移动位数超过该类型的最大位数,那么编译器会对移动的位数取模。例如果对int类型移位33位,实际上只移动了33%32=1位。具体细节是(int ab)如果移位超过数值类型的最大位数,

58、就将b化为二进制数,取右端的低5位数,再把这5位数化为10进调撤趣制,此时这个10进制就是要将a移动的位数,long 类型同理。

59、注意:移位运算符不存在“无符号”左移这一说。

60、位移运算符适用于很多场景,可以提高运行速率,相比于直接运算,位移运算符大大提高了速率。所以在日常敲代码的时候,可以适当用位移运算符

以上就是位移这篇文章的一些介绍,希望对大家有所帮助。

免责声明:本文由用户上传,如有侵权请联系删除! 标签:

上一篇:电脑设计培训(电脑设计)

声明:生活头条网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系admin@gdcyjd.com