机器码与真值
机器码:一个二进制数,首位为这个数的符号位 1为负符号 0为正符号
如:00000011 = 3
10000011 =-3
真值:
去除符号位后剩余二进制数计算出来的值,称为真值
原码、反码、补码(计算中所有的二进制都使用补码表示)
计算机使用补码的原因:使计算更精确 只使用原码或反码计算会出现-0的情况使计算机更加简便
计算机中没有减法 只有加法 如(-1)=(+-1) 所以有补码的出现
数据分为有符号数和无符号数,无符号数所有值为正数
所有无符号数(正数的原码、反码、补码一致)
有符号数:(正数) 原码==反码==补码
有符号数:(负数 )反码==原码(除符号位)所以数取反 补码=反码+1
原码
取值范围:-128到+127
11111111到01111111
反码
正数 : 原码=反码
负数:除符号位(首位)外 所有的位数值取反
补码
正数:原码=反码=补码
负数:在反码的基础上+1
如果在赋值 必须在对应的二制制前加 0b
如 int a1=0b11111101
位运算(针对二进制数的计算,计算后的值为补码)
& 同1为1 有0为0
| 同0为0 有1为1
~ 变1为0 变0为1
^相同为0 不同为1
<< 左移 各二进制位左移,高位丢弃,低位补0 向左移n位相当于 原数*(2的n次方)
值会变更大或更小
>> 右移 各二进制位右移,低位丢弃,高位补符号位 向右移n位相当于 原数/(2的n次方) 右移位不会改变一个数的正负值 值会变小
实用技能:
1、任何一个数与1进行(&)操作 可以判断一个数是奇偶数
1= 00000001
只需要知道这个数的最后一个数是0还是1 如果为1则为奇数 如果为0则为偶数
2、可以将任意数位设置为0
因为 &去处 有0为0 所以不管这个位上的值是多少 都会变为0