在C/C++中,我可以有以下循环
__CODE__
在Python中如何做同样的事情?
我可以做这个
__CODE__
在Python中,它将与之相同
__CODE__
在C/C++中.
我试图弄清楚算术位移运算符在C中是如何工作的,以及它将如何影响带符号的32位整数.
为简单起见,假设我们在一个字节(8位)内工作:
x = 1101.0101
MSB[ 1101.0101 ]LSB
Run Code Online (Sandbox Code Playgroud)
在Stack Overflow和一些网站上阅读其他帖子,我发现:
<<
将转向MSB(在我的情况下向左),并用0填充"空"LSB位.
而>>
会向着转向LSB(向右,在我的情况),并填写"空"与MS位位
因此,x = x << 7
将导致LSB移动到MSB,并将所有内容设置为0.
1000.0000
Run Code Online (Sandbox Code Playgroud)
现在,让我说我会>> 7
,最后的结果.这会导致[0000.0010]
?我对吗?
关于转移运营商我的假设是对的吗?
我刚在我的机器上测试过,**
int x = 1; //000000000......01
x = x << 31; //100000000......00
x = x >> 31; //111111111......11 (Everything is filled with 1s !!!!!)
Run Code Online (Sandbox Code Playgroud)
为什么?
最近开始探索Android平台.在Android SDK管理器中,在Android 4.4.2(API 19)包下,有两个图像:Intel x86 Atom System Image
,以及Google APIs (x86 System Image)
我想知道,这两张图片有什么区别?在Windows 7上工作,使用Android Studio并已Intel x86 Emulator Accelerator(HAXM)
安装.
谢谢 !
我是Python和Eclipse的新手,在理解如何将命令行参数传递给Eclipse(Pydev)中运行的脚本时遇到一些困难.
以下链接说明了如何将命令行参数传递给python脚本.
要将命令行参数传递给模块argecho.py
(来自上面链接的代码),
#argecho.py
import sys
for arg in sys.argv: 1
print arg
Run Code Online (Sandbox Code Playgroud)
我需要输入python控制台
[you@localhost py]$ python argecho.py
argecho.py
Run Code Online (Sandbox Code Playgroud)
要么
[you@localhost py]$ python argecho.py abc def
argecho.py
abc
def
Run Code Online (Sandbox Code Playgroud)
我如何将相同的参数传递给Eclipse中的Python脚本(Pydev)?
谢谢 !
在阅读http://en.cppreference.com/w/cpp/language/member_functions时,我遇到了一些事情,我以前没见过:lvalue/rvalue Ref-qualified member functions
.他们的目的是什么?
我用C++写了两个矩阵乘法程序:常规MM (源)和Strassen的MM (源),它们都在大小为2 ^ kx 2 ^ k的矩形矩阵上运算(换句话说,是偶数大小的方阵).
结果很可怕.对于1024 x 1024矩阵,常规MM需要46.381 sec
,而Strassen的MM需要1484.303 sec
(25 minutes
!!!!).
我试图让代码尽可能简单.在网上找到的其他Strassen的MM示例与我的代码没有太大的不同.Strassen代码的一个问题显而易见 - 我没有切换点,切换到常规MM.
我的Strassen的MM代码有哪些其他问题?
谢谢 !
直接链接到源
http://pastebin.com/HqHtFpq9
http://pastebin.com/USRQ5tuy
EDIT1.拳头,很多很棒的建议.感谢您抽出宝贵时间和分享知识.
我实施了更改(保留了我的所有代码),添加了截止点.具有截止512的2048x2048矩阵的MM已经给出了良好的结果.常规MM:191.49s Strassen的MM:112.179s显着改善.使用英特尔迅驰处理器,使用Visual Studio 2012,在史前联想X61 TabletPC上获得了结果.我将进行更多检查(以确保我得到正确的结果),并将发布结果.
我是Eclipse的新手.尝试设置进行远程调试.
这是情况,我连接到运行Linux的远程机器,我正在运行Windows.
1)我已经为Eclipse安装了所有必需的工具,并且能够连接到Linux机器.
2)远程机器有 gdbserver
linux1[1]% gdbserver
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...]
gdbserver [OPTIONS] --attach COMM PID
gdbserver [OPTIONS] --multi COMM
COMM may either be a tty device (for serial debugging), or
HOST:PORT to listen for a TCP connection.
Options:
--debug Enable debugging output.
Run Code Online (Sandbox Code Playgroud)
我需要在gdbserver
???中配置任何东西吗?
3)我还应该在Eclipse中配置什么?用于远程调试?
4)我的GDB版本与远程机器GDB有什么不同?
我正在阅读"计算机系统:程序员视角",第3章解释mov
说明,书中的解释让我感到困惑.
提供功能(第142页1版)
int exchange( int *xp, int y)
{
int x = *xp;
*xp = y;
return x;
}
Run Code Online (Sandbox Code Playgroud)
函数体的汇编代码
movl 8(%ebp), %eax //Get xp
movl 12(%ebp), %edx //Get y
movl (%eax), %ecx //Get x at *xp
movl %edx, (%eax) //Store y at *xp
movl %ecx, %eax //Set x as return value
Run Code Online (Sandbox Code Playgroud)
令我困惑的是,将要存储的是什么,以及
我在何处理解这一点:
movl 8(%ebp), %eax //Get xp
Run Code Online (Sandbox Code Playgroud)
CPU在堆栈中向上移动+8个字节(从帧指针%ebp
),获取存储在该位置的值,并将该值存储在寄存器中%eax
(强调 - 存储值,而不是地址)
我是对的 ?谢谢 !
我<chrono>
在C++ 11中有几个关于新标题的问题.使用Windows 7,Visual Studio 2012.
查看示例http://en.cppreference.com/w/cpp/chrono
#include <iostream>
#include <chrono>
#include <ctime>
int fibonacci(int n)
{
if (n < 3) return 1;
return fibonacci(n-1) + fibonacci(n-2);
}
int main()
{
std::chrono::time_point<std::chrono::system_clock> start, end;
start = std::chrono::system_clock::now();
int result = fibonacci(42);
end = std::chrono::system_clock::now();
int elapsed_seconds = std::chrono::duration_cast<std::chrono::seconds>
(end-start).count();
std::time_t end_time = std::chrono::system_clock::to_time_t(end);
std::cout << "finished computation at " << std::ctime(&end_time)
<< "elapsed time: " << elapsed_seconds << "s\n";
}
Run Code Online (Sandbox Code Playgroud)
可能的输出
finished computation at Sat Jun 16 20:42:57 …
Run Code Online (Sandbox Code Playgroud) 我正在阅读Joe的Albahari C#线程教程:
作者解释了为什么DateTime.Now
需要线程安全:
只有当所有并发线程都知道并使用锁定时,才能对自定义锁定周围的对象进行包装访问.如果对象的范围很广,则可能不是这种情况.最糟糕的情况是公共类型的静态成员.例如,假设DateTime结构上的静态属性DateTime.Now不是线程安全的,并且两个并发调用可能导致输出乱码或异常.使用外部锁定解决此问题的唯一方法可能是在调用DateTime.Now之前锁定类型本身 - lock(typeof(DateTime)).只有当所有程序员都同意这样做时(这是不可能的),这才有效.此外,锁定类型会产生其自身的问题.
因此,DateTime结构上的静态成员已经过仔细编程,以确保线程安全.
根据MS docs,.NOW
是public static DateTime Now { get; }
,即只读属性.如果它是只读的,为什么要打扰线程安全呢?两个并发呼叫应该能够获得当前时间而不会相互干扰?
编辑:很多人指出问题不是很清楚.我确实假设它应该是安全的,因为:它是只读的,因为它是时间(总是在改变).
c++ ×3
c ×2
c++11 ×2
eclipse ×2
python ×2
.net ×1
android ×1
assembly ×1
c# ×1
c++-chrono ×1
optimization ×1
performance ×1
pydev ×1
stl ×1
strassen ×1