二进制移动

二进制移动

1、算术左移-逻辑左移

算​术左移和逻辑左移一样都是右边补0:
 比如: 00101011​ 算术左移一位:01010110 
                逻辑左移一位​:01010110

对于二进制的数值来说左移n位等于原来的数值乘以2的n次方

 比如:00011010十进制是26,左移两位后是011010​00转成十进制是104恰好是26的4倍。

ps:这种倍数关系只适用于左移后被舍弃的高位不含1的情况,否则会溢出。

​2、 算术右移,逻辑右移

逻辑右移很简单,只要将二进制数整体右移,左边补0即可
 比如:10101101逻辑右移一位为01010110
算术右移符号位要一起移动,并且在左边补上符号位,也就是如果符号位是1就补1符号位是0就补0
 比如:11100算术右移一位为11110(符号位1跟着一起移动并且左边补了1)  

对于二进制的数值来说右移n位等于原来的数值除以2的n次方

比如10110100十进制是76(需要先将这个补码转换成原码之后再转换成十进制),右移两位后是11101101转成十进制是19恰好是76的4倍。  

3、算数移动逻辑移动的意义

算术左移和算术右移主要用来进行有符号数的倍增、减半;  
逻辑左移和逻辑右移主要用来进行无符号数的倍增、减半。
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
二进制图文详解 二进制Binary 2进制 逢二进一的计数规则。 在计机内部,一切数据都是2进制的!! 2进制的数字 补码 补码本质是一种解决负数问题的法。 1. 将数据的一半当做负数使用。 2. 补码在内存中是2进制的,显示的时候为10进制。 - Java利用法支持了补码计: - Integer.parseInt() - Integer.toString() 3. 补码的缺点: - 不支持超范围计 - 超范围计自动溢出 4. 解决补码的缺点:采用更大范围(更多位数)的补码 Java是如何计 -2-1 的 补码的规律 1. 最大值的规律:最高位0 剩下全是1 - int类型:一个0,31个1 - long类型:一个0,63个1 2. 最小值的规律:最高位1 剩下全是0 - int类型:一个1,31个0 - long类型:一个1,63个0 3. 负数的最高位是1, 正数最高位是0 - 最高位做为识别正数和负数的标志位:称为符号位 - 注意:符号位不是用来表示正负号的!!! 4. -1 的规律:所有位都是1!! 5. 溢出是有规律的! 是一个周期性计结果。 - 最大值+1 = 最小值 6. 补码的对称现象:-n = ~n + 1 案例: int max = Integer.MAX_VALUE; System.out.println(Integer.toBinaryString(max)); int min = Integer.MIN_VALUE; System.out.println(Integer.toBinaryString(min)); long lmax = Long.MAX_VALUE; System.out.println(Long.toBinaryString(lmax)); long lmin = Long.MIN_VALUE; System.out.println(Long.toBinaryString(lmin)); //-1的规律 int n = -1; System.out.println(Integer.toBinaryString(n)); long l = -1L; System.out.println(Long.toBinaryString(l)); //最大值+1溢出得到最小值 // 推论:Java中的int数字是按照补码圆环排列的 int m = Integer.MAX_VALUE+1; System.out.println(m);//最小值 //一个数的溢出测试: n = 345; m = n + Integer.MAX_VALUE+1; System.out.println(m);//负数 m = n + Integer.MAX_VALUE+1+ Integer.MAX_VALUE; System.out.println(m);//344 正数 m = n - (Integer.MAX_VALUE+1+ Integer.MAX_VALUE+1); System.out.println(m);//345 正数 经典面试题1 正数的溢出结果是负数(错误!!!) 经典面试题2 int i = Integer.MAX_VALUE+1; System.out.println( Integer.toBinaryString(i)); 选择运行结果(D): A. 11111111111111111111111111111111 B. 1111111111111111111111111111111 C. 01111111111111111111111111111111 D. 10000000000000000000000000000000 经典面试题3 System.out.println(~-55); 如上代码的运结果: ( 54 ) System.out.println(~-230); 如上代码的运结果: ( 229 ) System.out.println(~55); 如上代码的运结果: ( -56 ) 16进制 16进制是2进制的简写形式 2进制运 1. ~ 取反运 2. & 与运(逻辑乘法) 运规则: 1 & 1 = 1 1 & 0 = 0 0 & 1 = 0 0 & 0 = 0 与运用途: n: 00010100 11010111 01010001 11101010 m: 00000000 00000000 00000000 11111111
回答: 在Python中,可以使用bin()函数将十进制数转化为二进制数。例如,bin(10)将返回'0b1010',表示十进制数10的二进制形式。此外,Python还提供了一些二进制位运符,如按位与(&)、按位或(|)、按位异或(^)、按位反转(~)、左移动(<<)和右移动(>>)等。这些运符可以用于对二进制数进行位运操作。例如,使用按位与运符(&)可以对两个二进制数的相应位进行与运,如果相应位数都为1,则该位的结果为1,否则为0。使用按位或运符(|)可以对两个二进制数的相应位进行或运,如果相应位数有一个为1,则结果为1;若都为0,则结果为0。使用按位异或运符(^)可以对两个二进制数的相应位进行异或运,如果对应位数相异,则结果为1;相同时,结果为0。使用按位反转运符(~)可以对一个二进制数进行按位翻转,即将每个位取反。使用左移动符(<<)可以将一个二进制数的所有位向左移动指定的位数,高位丢弃,低位补0。使用右移动运符(>>)可以将一个二进制数的所有位向右移动指定的位数,低位丢弃,高位补0。 #### 引用[.reference_title] - *1* [【python】数据类型4-二进制二进制符](https://blog.csdn.net/weixin_43098506/article/details/125175797)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值