0x00 前言web
----万般皆苦,惟有自渡;人生苦短,我亦朝阳spa
0x01 机器数--二进制数it
机器数 | 数字在计算机中的二进制表示形式,且有对应的符号位 |
符号位 | 二进制数的最高位(第一位),且正数为0,负数为1。如00000110为6,10000110为-6 |
机器的字长 | 机器内部设备一次能表示的二进制位数。编译 8bit=1Byte,即,字节的整数倍为字长,如8位、16位table |
真值 | 带符号位的机器数对应的真正数值。基础 如二进制数10000110的真值为为二进制的-0000110,或十进制的-6,而不是134变量 |
0x02 原码,反码,补码等二进制
概念 | 使用 | |
原码 | 符号位加上真值的绝对值 | 如-6的原码为10000110,8的原码为00001000 |
反码 | 正数的反码为其自己,即与原码相同;总结 负数的反码为原码的基础上, 符号位不变,其他各位取反(0和1互变)计算机 |
如-6的反码为11111001;6的反码仍是00000110 |
补码 | 正数的补码为其自己,即与原码相同; 负数的补码为其反码+1 数0的补码表示是惟一,即00000000 |
如-6的补码为11111010;8的补码仍是00001000 |
总结 | 正数的原码、反码、补码相同;负数的如上 |
|
负数的补码转十进制 | 一、各位取反;二、转十进制;三、加符号,再-1 |
如11111010:一、00000101; 二、5; 三、-6 |
0x03 位运算符
表达式/声明 | 二进制数 | 备注 |
int a=6; | 00000110 | 定义整型变量 |
int b=11; | 00001011 | |
a&b | 00000010 | 按位与。有0为0 |
a|b | 00001111 | 按位或。有1为1 |
a^b | 00001101 | 按位异或。不一样为1 |
~a | 11111001 | 取反。0和1互变 |
a>>2 | 00000001 | a的二进制数都向右移2位。低位舍弃,高位: a为正数时,最高位补0 a为负数时,最高位看编译系统是补0/1 |
a<<2 | 00011000 | a的二进制数都向左移2位。高位丢弃,低位补0 |
0x02 编外
----内容为本人查阅资料理解,若有侵权,请及时联系本人