我必须翻转整数的二进制表示中的所有位。 鉴于: 10101 输出应该是 01010 什么是按位运算符来完成此与整数一起使用? 例如,如果我正在写像int flipBits(int n); ,身体会发生什么? 我只需要翻转已经存在的数字,而不是整数中的所有32位。
到现在为止,我相信1024字节等于1 KB(千字节),但我正在网上阅读关于十进制和二进制系统。 所以,实际上1024字节= 1 KB将是定义的正确方法,或者只是一般的混淆? 对不起,如果我的问题太傻了。 提前致谢。
我如何打开一个具有标志属性设置的枚举(或更精确地用于位操作)? 我希望能够在与所声明的值相匹配的开关中击中所有情况。 问题是,如果我有以下枚举 [Flags()]public enum CheckType { Form = 1, QueryString = 2, TempData = 4, } 我想用这样的开关 switch(theCheckType) { case CheckType.Form: DoSomething(/*Some type of collection is passed */); break; case CheckType.QueryString: DoSomethingElse(/*Some other type of collection is passed */); break; case CheckType.TempData DoWhatever(/*Some different type of collection is passed */); break; } 如果“theCheckType”设置为CheckType.Form | […]
我需要创build一个查询,将True(1)和False(0)的数量从一个位字段中分成两个单独的列。 我join了3张桌子,需要它是这样的: 属性| 类| 通过| 失败 我将分组在属性和类。
我们的C ++库目前使用time_t来存储时间值。 在某些地方,我开始需要亚秒级精度,所以无论如何需要更大的数据types。 另外,在某些地方解决2038年问题也许是有用的。 所以我正在考虑完全切换到一个具有底层int64_t值的单个Time类,以取代所有地方的time_t值。 现在我想知道在32位操作系统或32位CPU上运行此代码时,这种更改对性能的影响。 IIUC编译器将生成使用32位寄存器执行64位算术的代码。 但是如果速度太慢,我可能不得不采用更加差异化的方式来处理时间值,这可能会使软件更难以维护。 我感兴趣的是: 哪些因素影响这些操作的性能? 可能是编译器和编译器的版本; 但操作系统或CPU制造商/型号是否也影响了这一点? 一个普通的32位系统将使用现代CPU的64位寄存器吗? 哪些操作在32位模拟时特别慢? 还是哪个几乎没有放缓? 在32位系统上使用int64_t / uint64_t是否有任何现有的基准testing结果? 有没有人有这种性能影响的自己的经验? 我主要对Intel Core 2系统上Linux 2.6(RHEL5,RHEL6)上的g ++ 4.1和4.4感兴趣; 但是也能很好地了解其他系统的情况(如Sparc Solaris + Solaris CC,Windows + MSVC)。
我们有8位,16位,32位和64位的硬件架构和操作系统。 但不是,比如42位或者69位。 为什么? 2 ^ n位是一个更好的select,还是与现有系统兼容? (一个64位寄存器可以容纳两个32位指针,或者一个32位数据单元可以容纳4个字节,显然很方便)。
我必须说我从来没有理由使用按位运算符,但是我确信有一些我已经执行的操作可以更有效地完成它们。 如何“转移”和“OR-ing”帮助您更有效地解决问题?
我一直在使用Cygwin (很长一段时间)。 具体来说,我在Win7上使用它(包括gcc / g ++)进行开发工作。 我刚刚注意到现在存在一个64位版本 。 我没有具体的需要,我需要转换到64位,但我想知道是否要这样做。 这是可取的吗? 优缺点都有什么? 在转换过程中是否存在过度的问题?
我想我是专注于x86,但我一般感兴趣的是从32位到64位。 从逻辑上讲,我可以看到常量和指针在某些情况下会更大,所以程序可能会更大。 而为了效率而分配字边界的内存意味着分配之间会有更多的空白。 我也听说x86上的32位模式必须在由于可能的4G地址空间重叠而发生上下文切换时刷新其caching。 那么,64位的真正好处是什么呢? 作为一个补充问题,128位会更好吗? 编辑: 我刚刚写了我的第一个32/64位程序。 它使16字节(32b版本)或32字节(64b版本)对象链表/树,并做了很多印刷stderr – 不是一个真正有用的程序,而不是典型的,但这是我的第一个。 大小:81128(32b)v 83672(64b) – 所以没有太大的区别 速度:17s(32b)v 24s(64b) – 运行在32位操作系统(OS-X 10.5.8) 更新: 我注意到一个新的混合型x32 ABI(应用程序二进制接口)正在开发,它是64b,但使用32b指针。 对于一些testing,它会比32b或64b更小的代码和更快的执行速度。 https://sites.google.com/site/x32abi/
例如: int get(int i) { int res = 0; while (i) { res = (res + tree[i]) % MOD; i -= ( (i) & (-i) ); } return res; } 树更新function: void update(int i, int val) { while (i <= m) { tree[i] = (tree[i] + val) % MOD; i += ( (i) & (-i) […]