【NB】带符号右移与无符号右移顶折

编程开发   © 文章版权由 admin 解释,禁止匿名转载

#楼主# 2023-2-24

带符号右移与无符号右移顶折带符号右移 >>对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0对于负数, 带符号右移 >> 会把所有的位右移,并在最前面补1无符号右移>>>如果是一个负数,那么对应的二进制的第一位是1无符号右移>>>会把第一位的1也向右移动,导致移动后,第一位变成0这样就会使得负数在无符号右移后,得到一个正数简单的说:带符号右移 >> 移动后正的还是正的,负的还是负的,符号不变无符号右移>>>移动后,变正的了123456789101112131415161718192021222324252627public class HelloWorld { public static void main(String[] args) { int i =-10; //-10的二进制是11111111111111111111111111110110 //第一位是1,即符号位,代表这是一个负数 System.out.println(Integer.toBinaryString(i)); //对于正数, 带符号右移 >> 会把所有的位右移,并在最前面补0 //对于负数, 带符号右移 >> 会把所有的位右移,并在最前面补1 //-10带符号右移1位,移动后前面补齐1 //得到11111111111111111111111111111011 //因为第一位是1,所以依然是一个负数,对应的十进制是-5 int j = i>>1; System.out.println(Integer.toBinaryString(j)); System.out.println(j); //-10无符号向右移1位,符号位也会向右移,第一位就变成了0 //得到01111111111111111111111111111011,对应的十进制是2147483643 int k = i>>>1; System.out.println(Integer.toBinaryString(k)); System.out.println(k); } }操作符int i = 3; // 二进制是11int j = 2; // 二进制是10int c = ((i | j) ^ (i & j)) << 2 >>> 1; 1.((11)^(10))<<2>>>1;2.(01)<<2>>>1;3.(100)>>>1;4.10 (十进制表达就是2)

沙发
NB狐狸 2023-2-27
幸福,就是可以真心为别人着想。
板凳
NB狐狸 2023-3-8
在冷酷和粗暴的世界里,用自己温柔的方式生存下去的人,是了不起的人,我想做一个了不起的人。
地板
NB狐狸 2023-3-8
大家都是自己选择的,为了获得幸福。

评论

登录后才可发表内容
  • 主题

    140

  • 帖子

    219

  • 关注者

    0

TA的新帖
Copyright © 2019 凯特网.   Powered by HYBBS 2.3.4  

Runtime:0.0874s Mem:2076Kb