对部分不周山DataLab实验粗略分析

本文通过分析不周山DataLab的实验,深入探讨了位移运算在判断最小值、数值比较和溢出检测中的应用。作者通过实例解析了左移如何表现,并展示了如何使用位操作判断一个数是否为最小值、数值是否相等以及减法运算是否溢出。文章适合初学者理解位运算在编程中的实际运用。
摘要由CSDN通过智能技术生成

最近一直在看老师推荐的不周山的文章,对不周山的实验有些想法,现在想把自己的想法表达出来,作为小白就要敢于表达自己的想法。

下面就是不周山的实验:

thirdBits:
在这里插入图片描述如图,先设整型变量a并赋值0x49,即step1,0x49用二进制数表示为“01001001”。因为是int型变量,所以有32位bit,故前面会用0填到32位数,即“00000000000000000000000001001001。”再把a的二进制表示的数左移9位得到的值赋给b。这时,再看二进制表示的变量a,把整串数左移9位,也就是左边去掉9位数,右边添9个0。因为分配给变量b的大小只有32个bit位,所以左移后的位数也是严格统一的。step3是一个加法运算,step4的原理是与step2是一样的。
从这串代码中,我深层地了解到左移是如何表现的。

isTmin:

该函数时判断一个数是不是Tmin(最小值)。虽然不周山的实验里说不能使用移位运算来判断,但我还是仔细想了想用移位运算怎么做。int型变量是32个bit位,所以最小值是“1000 0000 0000 0000 0000 0000 0000 0000”,其特点一眼就看的出。最高位为“1”,其他位全为“0”。所以用移位运算做的话,在排除该数等于“0”的情况下,只需将数向左移一位,结果如果全为“0”,则说明该数为Tmin。下面为通过移位运算判断一个数是不是Tmin的函数

int isTmin(int x){
if(x!&#
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值