位运算符与其他
秋问 人气:0
0x00 前言
----万般皆苦,唯有自渡;人生苦短,我亦朝阳
0x01 机器数--二进制数
机器数 | 数字在计算机中的二进制表示形式,且有对应的符号位 |
符号位 | 二进制数的最高位(第一位),且正数为0,负数为1。如00000110为6,10000110为-6 |
机器的字长 |
机器内部设备一次能表示的二进制位数。 8bit=1Byte,即,字节的整数倍为字长,如8位、16位 |
真值 |
带符号位的机器数对应的真正数值。 如二进制数10000110的真值为为二进制的-0000110,或十进制的-6,而不是134 |
0x02 原码,反码,补码等
概念 | 使用 | |
原码 | 符号位加上真值的绝对值 | 如-6的原码为10000110,8的原码为00001000 |
反码 |
正数的反码为其本身,即与原码相同; 负数的反码为原码的基础上, 符号位不变,其余各位取反(0和1互变) |
如-6的反码为11111001;6的反码还是00000110 |
补码 |
正数的补码为其本身,即与原码相同; 负数的补码为其反码+1 数0的补码表示是唯一,即00000000 |
如-6的补码为11111010;8的补码还是00001000 |
总结 |
正数的原码、反码、补码相同;负数的如上 |
|
负数的补码转十进制 |
1、各位取反;2、转十进制;3、加符号,再-1 |
如11111010:1、00000101; 2、5; 3、-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 编外
----内容为本人查阅资料理解,如有侵权,请及时联系本人
加载全部内容