两道笔试题,大家帮忙看一下...

darkwalkertt 2008-10-29 10:23:45
1.已知x,不用+,-,*,/符号,计算出x+1的值;
2.检验一个整数是否为2的n次方数,要求用一行代码,而且不能使用循环语句。
笔试的时候没想出来...
...全文
608 48 打赏 收藏 转发到动态 举报
写回复
用AI写文章
48 条回复
切换为时间正序
请发表友善的回复…
发表回复
cba_v 2008-10-29
  • 打赏
  • 举报
回复
2, x&(x-1)? false:true // 只有1位是1,其他位都为0的数为2的n次方。
不是很清楚 原理 能否讲解一下
太乙 2008-10-29
  • 打赏
  • 举报
回复


1.已知x,不用+,-,*,/符号,计算出x+1的值;

答:12L就可以达到效果

2.检验一个整数是否为2的n次方数,要求用一行代码,而且不能使用循环语句。

答:4L
kiffa 2008-10-29
  • 打赏
  • 举报
回复
1 取巧的方法真多:
int x = 5;
string s(x, 'a');
s.push_back('a');
cout << s.size() << endl;




xmczr 2008-10-29
  • 打赏
  • 举报
回复
1,用以为的思想比较好处理,加1就是从最后一个二进制的数开始,直到找到第一个0,前面全是的重置为0,将找到的第一个0设置为1

2,if(x&(x-1))成立就不是2的n次方,不成立就是
once_and_again 2008-10-29
  • 打赏
  • 举报
回复
2 移位可以吗?
liumingrong 2008-10-29
  • 打赏
  • 举报
回复
int add1(int a)
{
if( (a| 1) > a)
return (a |= 1);
else
{
int i = 1;
while( (a|i) == a)
i = i << 1;
a = a | i;
int j = i;
while(i > 1)
{
a = a >> 1;
i = i >> 1;
}
while( i != j)
{
a = a << 1;
i = i << 1;
}
return a;
}
}
树先生 2008-10-29
  • 打赏
  • 举报
回复
1. int add(int i)
{
char (*p)[2] = (char (*)[2])i;
return (int)&((*p)[1]);
}

2. 4楼很好
yyyapple 2008-10-29
  • 打赏
  • 举报
回复
1.假设是整数
int Add(int x)
{
int n = x, b =1;
while( (n & b)) {
n = n& (~b);
b = b<<1;
}
return (n | b);
}

2. x == 1<<n
cyj626 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kiffa 的回复:]
2, x&(x-1)? false:true // 只有1位是1,其他位都为0的数为2的n次方。
[/Quote]同意
kiffa 2008-10-29
  • 打赏
  • 举报
回复
我只翻过编码的奥秘。。。
kiffa 2008-10-29
  • 打赏
  • 举报
回复
1, 需要限定x为常量表达式,也不太好。
const int x = 3;
enmu K{i = x, j};
cout << j << endl;
wryse 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kiffa 的回复:]
2, x&(x-1)? false:true // 只有1位是1,其他位都为0的数为2的n次方。
[/Quote]
正解,x&(x-1)一般都用来消去最后一位1……
yyyapple 2008-10-29
  • 打赏
  • 举报
回复
去看看编程的奥秘
kiffa 2008-10-29
  • 打赏
  • 举报
回复
1,不是太好的方法,再想想别的。
int x = 3;
char *p = (char*)x;
cout << (int)&p[1] << endl;
OenAuth.Net 2008-10-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kiffa 的回复:]
2, x&(x-1)? false:true // 只有1位是1,其他位都为0的数为2的n次方。
[/Quote]

正解,想法不错
kiffa 2008-10-29
  • 打赏
  • 举报
回复
2, x&(x-1)? false:true // 只有1位是1,其他位都为0的数为2的n次方。
darkwalkertt 2008-10-29
  • 打赏
  • 举报
回复
语句中不能出现那四种符号...
位操作考虑过了,想到了按位异或之后再处理一下,具体怎么弄还没搞出来。
树先生 2008-10-29
  • 打赏
  • 举报
回复
1.x++ 不可以吗
2.应该可以用位操作解决
树先生 2008-10-29
  • 打赏
  • 举报
回复
mark再看
C_Plus87 2008-10-29
  • 打赏
  • 举报
回复
第二题
i为该整数
i >> n == 1 ? cout<<"Yes" : cout<<"No";
加载更多回复(28)
内容概要:本文系统研究了构网型变流器的正负序阻抗解耦特性及其在弱电网环境下的稳定性表现,重点依托Matlab/Simulink仿真平台,构建了详细的阻抗数学模型,设计了解耦控制策略,并采用小信号扫频法进行频域辨识与稳定性验证。研究深入探讨了构网型变流器与传统跟网型逆变器在正负序阻抗特性上的本质差异,结合虚拟同步发电机(VSG)等先进控制技术,分析其在抑制宽频带振荡、削弱锁相环动态耦合等方面的优越性。文中不仅提供了完整的仿真模型与MATLAB代码实现,还整合了光伏、风电、储能、微电网等多类新能源系统的阻抗建模与稳定性分析资源,形成了一套面向新型电力系统稳定性的综合性技术资料体系,具有较强的科研复现与工程参考价值。; 适合人群:面向具备电力电子、电力系统自动化、新能源并网等专业背景的研究生、高校教师及工程技术人员,特别适用于从事阻抗建模、小干扰稳定性分析、宽频振荡机理研究以及撰写高水平学术论文的科研工作者。; 使用场景及目标:①掌握构网型变流器正负序阻抗建模与扫频辨识的仿真方法;②深入理解VSG等构网型控制在弱电网中提升稳定性的内在机理;③复现顶刊论文中的阻抗分析流程与稳定性判据应用;④利用提供的成熟模型与代码加速科研进程,支撑课题研究与学术成果产出。; 阅读建议:建议结合文中提供的Simulink模型与MATLAB代码,按照“理论建模—仿真搭建—扫频激励—频响提取—Nyquist判据分析”的完整流程进行实践操作,重点关注扫频信号的注入方式、频率范围设置及阻抗曲线的物理意义解读,并参考博士论文复现案例深化对复杂动态耦合问题的理解。

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧