首页 > 编程知识 正文

球从100米下落c语言(加速度方向不变 速度方向也不变吗)

时间:2023-05-04 17:41:56 阅读:85334 作者:2218

左移和右移运算符

C语言有左移位运算符和右移位运算符。 例如,“”是左移位运算符,“”是右移位运算符。 使用格式如下所示。

(1) v-n表示数值v向左偏移了n位;

)2) vn表示数值v向右移动n比特;

3 ) v可以是某个变量,也可以是操作变量v中的数值

在计算机系统中,存储在内存中的数据都是二进制数据。 让我举几个例子。

(1)例如3这个数值存储在1字节的空间中,其二进制形式为0000 0011。 将该数值向左移动2位,则得到0000 1100,此时显示的10进制数为12。

2 )例如2这个数值存储在1字节的空间中,其二进制形式为0000 0010。 将其向左移动3比特,则得到0001 0000。 此时,十进制表示16。

让我们来总结一下:

1 )数值3向左移动2位数,成为12的数值。 如3 * 2^2=3 * 4=12那样;

)2)将数值2向左移动3位,成为16的数值。 如2*2^3=2 * 8=16那样;

那么,总结一下,如果将数值n向左移动x位数,则为数值N*2^X,为数值n乘以2的x次方。 注意:我们这样的计算方式是不考虑“溢出”的情况。

在计算机的内存中,一个字节的容量是8位,所以如果“移位”操作一个字节的数据,就应该考虑“溢出”。 例如1100(0010 )这样的数值向左移动2位,则为0000 ) 1000,高字节的2位溢出。

测试的例子如下所示。

测试结果如下。

可知a变量的值向左偏移2位后保存在a1变量中。 也就是说,3个数值向左移动了2位,因此a1=3*2^2=3*4=12。 b1变量的值通过b变量的值向左移动3位,2数值向左移动3位,因此b1=2*2^3=2*8=16;

操作变量c的左移用于测试“溢出”的状况,由于char型的容量为1字节,因此只能存储8比特的数据。 中,c变量中存储225个数值的二进制是1110 0001的数据。 如果将该二进制文件向左偏移3位,则高位3位已经被删除,如果补充低位0,则得到0000 1000二进制文件,为8这一数值。

上面对“向左移动”的操作进行了说明。 那么,我们很清楚“向右移动”。 二进制数据向右移动。 让我举几个例子。

1 )例如8这个数值,与其对应的二进制数据为0000(1000,将其向右移动2比特,则低位字节的2比特偏移,如果高位比特补充0,则得到0000 ) 0010的数据,成为2值

)2)例如19这个数值,与其对应的二进制数据为0001 0011,如果将其向右移动1比特,则低位字节的1移位,如果高位比特弥补0,则得到0000 1001的数据,成为9值。

在这个时候,我们会被总结。

1 )将数值8向右移动2位数,得到相当于8/(2)2)=8/4=2的2数值。

)2)将数值19向右移动1位,得到9的数值。 这相当于19/(2^1)=19/2=9。 请注意,整数除法的操作是“除法”。 19/2=8.5,然后向上舍入,得到9这个数值。

进位是指小数部分大于等于0.5时,整数部分比当前值大1。 例如8.5这个数,小数部分为0.5,在0.5以上成立。 整数部分为8。 那么,如果整体向上取,则整个部分加1。 因此,变为8(1=9)。

向下对齐是指取出小数部分,只取整数部分。

如果将数值n向右移动x位数,则数值为n/(2^x ),即n的数值除以x的平方得到的值。 测试的例子如下所示。

方案的执行结果如下。

可以看出,如果a变量的值向右移动2位数,则a1变量的值为8/(2)2)=8/4=2。 如果将b变量的值向右偏移1位,则b1变量的值为19/(2^1)=19/2=9。

注意: 19之2=8.5。 目前,我们使用的GCC编译器对整数除法采用“进位”的方式。 因此,8.5的数值是进位为9的数值。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。