java学习日记20230304-位运算符

键盘输入

扫描器(对象) Scanner:标识一个简单的文本扫描器

 

进制

  • 二进制 0-1 以0b/0B开头
  • 八进制 0-7 以数字0开头
  • 十进制 0-9 
  • 十六进制 0-9 A-F(不区分大小写) 以0x/0X开头

进制的相互转化

介绍:

  2>10: 0b1011 > 11

  8>10: 0234 > 156

  16>10: 0x23A > 570

  10>2: 不断处以2,每步的余数反向连接起来+0b  34>2    0b00100010(一个字节有8位,需要00填高位)

  10>8:131>0203

  10>16:237>0xED

  2>8:从低位开始,将2进制每3位一组转化成8进制。0b11010101>0325

  2>16:从低位开始,将2进制每4位一组转化成16进制。ob11010101>0XD5

  8>2:每1位数转成3位二进制;0237>0b10011111

  16>2:每1位数转化为4位二进制;0x23b>0b001000111011

位运算

  原码,反码,补码

  • 二进制的最高位代码正负 0代表正数,1代表负数
  • 正数的原码,反码,补码都一致
  • 负数的补码=他的反码+1 负数的反码 = 负数的补码-1
  • 0的反码和补码都是0
  • 负数的反码=他的源码符号位不变,其他位取反
  • java没有无符号数,java的数都是有符号的
  • 计算机在运算的时候都是以补码的方式运算
  • 当我们看运算结果时,要看他的原码

位运算符

java中有7个位运算符(>>,<<,>>>,|,~,^,&)

  • 按位与&            两位全为1,结果为1,否则为0    
  • 按位或|       两位有一位为1,结果为1,否则为0.  
  • 按位异或^         两位一个为0一个为1,结果为1,否则为0 
  • 按位取反~         0>1,1>0     
    • 练习1:~-2 = ~10000000 00000000 00000000 00000010
    • 转补码 = ~11111111 11111111 11111111 11111110
    • 按位取反 = ~00000000 00000000 00000000 00000001
    • 转原码转10进制= 1
    • 练习2:~2 =~00000000 00000000 00000000 00000010
    • 取补码=00000000 00000000 00000000 00000010
    • 按位取反=11111111 11111111 111111111 11111101
    • 转反码=11111111 11111111 11111111 11111100
    • 转原码=10000000 00000000 00000000 00000011
    • 转10进制=-3
  • 算数右移>>. 低位溢出,符号位不变 int a =1 >> 2  00000001 >00000000 =1/2/2 =0
  • 算数左移<<. 符号位不变,低位补0.  int b=1<<2     00000001>00000100 = 1*2*2 =4
  • 逻辑右移/无符号位右移>>>,低位溢出,高位补0

浮点数取余数-10.5%3 >>>>>>a-int(a)/b * b = -1.5,小数参与的会得倒近似值

  

 

posted @   、子夜  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示