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,小数参与的会得倒近似值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!