二进制 && 位操作.
概论
计算中的任何数据都是由二进制表示,因为IC(Integrated Circuit)集成电路的引脚只有直流电压0V
或5V
两个状态,也就是一个IC引脚只能表示两个状态,和二进制 0
1
契合
数
二进制数0000 0101
转成10进制数结果为5 = 1*2^2 + 0*2^1 +1*2^0 = 4 + 0 + 1 = 5
即数值和位权
相乘后相加
正数和负数的表示
通常将数的二进制最高位作为符号位,1
表示负数,0
表示正数
10进制数1
的二进制数为:0000 0001
, 负数为 :~1 + 1 = -2 + 1 =-1
数v
取反:
正数:-(v+1)
负数 |v| -1
正数取反结果为负数,负数取反结果为整数
任何数取反加一的结果都为该数的相反数
正加负减(-(v+1)
)
以下数取反后的值 |
位移
只有右移时才能区分出逻辑位移
和算术位移
java中 >>
为算术右移,>>>
为逻辑位移
int x = -4; |
逻辑位移
补零就行了
算术位移
将二进制数作为带符号的数值进行运算时,移位后需要在最高位补充符号位(0或者1)
浮点数
符号、尾数、基数、指数
双精度(64bit)
符号部分(1bit) + 指数部分(11bit) + 尾数部分(52bit)
单精度(32bit)
符号部分(1bit) + 指数部分(8bit) + 尾数部分(23bit)