我的一个朋友有这些难题,这是一个逃避我。问题是,给你一个数字,你想返回这个数字乘以3除以16,四舍五入为0。应该很容易抓住了吗?你只能使用!~&^ |+>运算符,其中只有12个运算符的组合。int mult(int x){ //some code here...return y;}我的尝试是: int hold = x + x + x; int hold1 = 8; hold1 = hold1 & hold; hold1 = hold1 >> 3; hold = hold >> 4; hold = hold + hold1; return hold;但这似乎行不通我想我有一个丢失零碎东西的问题,但我似乎想不出一个办法来挽救它们。另一个角度也不错只需添加一点,如果可以使用语句或函数调用,也只能使用int类型的变量,而不能使用循环。现在我有号码0xfffffff它应该返回0x2fffff,但它返回的是0x3000000。 (adsbygoogle = window.adsbygoogle || []).push({}); 最佳答案 对于这个问题,你需要担心在除法之前丢失的数据(很明显)。本质上,如果它是负数,那么你想在乘以3后再加15一个简单的if语句(使用操作符)就足够了。我不会给你密码,但一步一步看起来,x = x*3取下标志并将其储存在变量blarg中。有另一个变量保持x+15;设置一个if语句,如果x为负数,则使用加15的值;如果不是,则使用正则数(乘以3)。然后除以16,你已经教过你怎么做了。祝你好运! (adsbygoogle = window.adsbygoogle || []).push({});
08-27 18:31