基础

一、进制转换

1.1二进制转十进制

计算机基础内容 - 图1

1.2十进制转二进制

计算机基础内容 - 图2
例题:将十进制234转换成八进制数是 352
【解析】 (3)8^2+(5)8^1+(2)*8^0=234;

二、原码,补码,反码

2.1原码
[+1]原 = 0000 0001
[-1]原 = 1000 0001

2.2反码
正数的反码是其本身
[+1] = [00000001]原 = [00000001]反

负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.
[-1] = [10000001]原 = [11111110]反

2.3补码
正数的补码就是其本身
[+1] = [00000001]原 = [00000001]反 = [00000001]补

在反码的基础上+1
[-1] = [10000001]原 = [11111110]反 = [11111111]补

注意:计算补码+1 满2进1

三、左移m<

左移
左移运算符<<
●👉使指定值的所有位都左移规定的次数
●左移m<<n,代表把数字m在无溢出的前提下乘以2的n次方

右移
右移运算符>>
●👉 使指定值的所有位都右移规定的次数
●右移m>>n 代表把数字m除以2的n次方,原来是正数的还是正数,负数还是负数
●注意,如果是单数,也就是二进制末位为1,则结果是将m除以2的n次方的整数商

无符号右移
无符号右移运算符>>>
👉同右移,但是结果全变正数

详细分析


<<表示左移,不分正负数,低位补0;
注:以下数据类型默认为byte-8位
左移时不管正负,低位补0
正数:r = 20 << 2
20的二进制补码:0001 0100
向左移动两位后:0101 0000
结果:r = 80

负数:r = -20 << 2
-20 的二进制原码 :1001 0100
-20 的二进制反码 :1110 1011
-20 的二进制补码 :1110 1100
左移两位后的补码:1011 0000
反码:1010 1111
原码:1101 0000
结果:r = -80

>>表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
注:以下数据类型默认为byte-8位
正数:r = 20 >> 2
20的二进制补码:0001 0100
向右移动两位后:0000 0101
结果:r = 5

负数:r = -20 >> 2
-20 的二进制原码 :1001 0100
-20 的二进制反码 :1110 1011
-20 的二进制补码 :1110 1100
右移两位后的补码:1111 1011
反码:1111 1010
原码:1000 0101
结果:r = -5

>>>表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0

正数: r = 20 >>> 2
的结果与 r = 20 >> 2 相同;
负数: r = -20 >>> 2
注:以下数据类型默认为int 32位
-20:源码:10000000 00000000 00000000 00010100
反码:11111111 11111111 11111111 11101011
补码:11111111 11111111 11111111 11101100
右移:00111111 11111111 11111111 11111011
结果:r = 1073741819