最近一直在看老师推荐的不周山的文章,对不周山的实验有些想法,现在想把自己的想法表达出来,作为小白就要敢于表达自己的想法。
下面就是不周山的实验:
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!&#