持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第4天,点击查看活动详情
一、进制介绍:对于整数,有四种表示方式;
1.二进制:0,1,满2进1,以0b或0B开头。
2.十进制:0-9,满10进1,
3.八进制:0-7,满8进1,以数字0开头表示,
4.十六进制:0-9及A(10)-F(15),满16进1,以0X或0x开头表示,此处的A-F不区分大小写。
二、进制的分类
在程序中,常用的进制可以分为以下几种:
二进制: 以数字0-1来表示每一个自然数,逢2进1。
八进制: 以数字0-7来表示每一个自然数,逢8进1。
十进制: 以数字0-9来表示每一个自然数,逢10进1。
十六进制: 以数字0-9,a-f来表示每一个自然数,逢16进1。A相当于十进制中的10,B是11,C是12,D是13,E是14,F是15
三、进制的转换:
第一组:
1.二进制转十进制:
规则:从最低位(右边)开始,将每个位上的数提取出来,乘以2的(位数-1)次方,然后求和。
0b1011 = 1 * 2的(1-1)次方 + 1 * 2的(2-1)次方 + 0 * 2的(3-1)次方 + 1 * 2的(4-1)次方 = 1+2+0+8=11
2.八进制转十进制:
规则:从最低位开始(右边)开始,将每个位上的数提取出来,乘以8的(位数-1)次方,然后求和。
0234 = 4 * 8的(1-1)次方+3 * 8的(2-1)次方+2 * 8的(3-1)次方 + 0 * 8的(4-1)次方 = 156;
3.十六进制转十进制:
规则:从最低位开始(右边)开始,将每个位上的数提取出来,乘以16的(位数-1)次方,然后求和。 0x23A = 10 * 16的(1-1)次方 + 3 * 16的(2-1)次方 + 2 * 16的(3-1)次方 = 570;
第二组:
1.十进制转换成二进制:
规则:将该数不断除以2,知道商为0为止,然后将每步的得到的余数倒过来,就是对应的二进制。 34 转成二进制 = 0b00100010
2.十进制转换成八进制:
规则:将该数不断除以8,知道商为0为止,然后将每步的得到的余数倒过来,就是对应的二进制。 131 转换成八进制 = 0203
3.十进制转换成十六进制:
规则:将该数不断除以16,知道商为0为止,然后将每步的得到的余数倒过来,就是对应的二进制。 237转换成十六进制 = 0xED
第三组:
1.二进制转换成八进制:
规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可 0b110100101 =>0325;
2.二进制转换成十六进制:
规则:从低位开始,将二进制数每四位一组,转成对应的八进制数即可 0b11010101 =>0xD5;
第四组:
1.八进制转换成二进制:
规则:将八进制数每一位,转成对应的一个3位的二进制数即可; 0237 转成二进制 0b010011111;
2.十六进制转换成二进制:
规则:将八进制数每一位,转成对应的一个3位的二进制数即可; 0x2(0010)3(0011)B(1011) =>0b001000111011;
四、二进制在运算中的说明:
1.二进制是逢2进位的进位制,0,1是基本算符;
2.现代的电子计算机技术全部采用的是二进制,因为它只是用0,1两个符号,非常简单方便,易于电子方式实现,计算机内部处理的信息,都是采用二进制数来表示的。二进制(Binarry)数用0和1两个数字机器组合来表示任何数,进位规则是“逢二进1”,数字1在不同的微商代表不同的值,按从右至左的次序,这个值以二倍递增。
五、原码、反码、补码
对于有符号的而言:
1.二进制的最高位(最左边)是符号位:0表示正数,1表示负数;
2.正数的原码、反码、补码都一样(三码合一);
3.负数的反码=它的原码符号位不变,其他位数取反;
4.负数的补码=它的反码+1,负数的反码 = 负数的补码 - 1;
5.0的反码,补码都是0;
6.java没有无符号数,也就是说java中的数都是有符号的;
7.在计算机运算的时候,都是以补码的方式来运算的。
8.当我们看运算结果的时候,要看它的原码。
六、位运算符:
java中有七个位运算符(&、|、^、~ 、>>、<<、>>>),分别是按位与&,按位或|,按位异或
1.运算规则:
(1)按位与&:两位全为1,结果为1,否则为0;
(2)按位或|:两位有一个为1,结果为1,否则为0;
(3)按位异或^:两位一个为0,一个为1,结果为1,否则为0;
(4)按位取反~:0 ->1 , 1->0
(5)算数右移>>:低位溢出,符号位不变,并用符号位补溢出的高位;
(6)算数左移<<:符号位不变,低位补0;
(7)逻辑右移>>>: 低位溢出,高位补0;
(8)无>>>运算符。