左移、右移操作符的简单操作
一、 原反补码
1.为什么会需要原反补码?
【来源于别的博客】在加法计算机里,只有加法器,没有减法器,所以,有的减法运算,必须用加法进行。通过被减数的补码代替被减数,可以将减法转变为加法运算。
2.原反补的简单介绍:
原码:数据的二进制
【计算机只能识别0和1,使用的是二进制,在日常生活中,我们用的是十进制,有正负之分,所以,在计算机中就得用一个数的最高位来存放符号位(0为正,1为负)】
反码:[signed]除了符号位以外,其余位按位取反。
【两个整数的加法运算没有问题,但是在面对带符号位负数运算上,出现了问题】
补码:[signed]在反码的基础上,+1
【在补码中,用(-128)代替了(-0),人为规定,补码表示范围是 -128~127 一共256个】
【补码的目的:1.可以使符号位和有效值部分一起参加运算,从而简化运算规则;2.使减法运算转化为加法运算】
3.对原反补的规定:
正数:原反补不变
负数:反码:将原码符号位不变,其余位按位取反;补码:反码加一。
二、左移操作符移位规则
(1)左移操作符【<<】移位规则:
无论是正整数、负整数都服从:左边抛弃,右边补0.**
//正数左移
int main()
{
int num = 100;
printf("%d", num << 1); //200
system("pause");
return 0;
}
//图解如下: