Tag: 位操作

〜x +〜y ==〜(x + y)总是假的?

这个代码总是评估为false? 这两个variables都是两个补码signed int。 ~x + ~y == ~(x + y) 我觉得应该有一些符合条件的数字。 我试图testing-5000到5000之间的数字,但从来没有达到平等。 有没有办法build立一个方程来find解决scheme的条件? 将另一个replace为我的程序中的一个隐藏的错误?

(x ^ 0x1)!= 0是什么意思?

我遇到了下面的代码片段 if( 0 != ( x ^ 0x1 ) ) encode( x, m ); x ^ 0x1是什么意思? 这是一些标准的技术?

Java中的double tilde(~~)是什么意思?

当浏览Guava的源代码时,我遇到了以下一段代码(用于内部类CartesianSet的hashCode实现的一部分): int adjust = size() – 1; for (int i = 0; i < axes.size(); i++) { adjust *= 31; adjust = ~~adjust; // in GWT, we have to deal with integer overflow carefully } int hash = 1; for (Set<E> axis : axes) { hash = 31 * hash + (size() / axis.size() * […]

只使用按位运算符添加两个整数?

在C#中,是否有可能执行两个32位整数的总和而不使用像if,elses,loops等东西? 也就是说,只能使用按位运算OR,AND,XOR,NOT,左移,右移?

为什么是1 >> 32 == 1?

我想知道如果这可能是一个JVM的错误? Java版本“1.6.0_0”OpenJDK运行时环境(IcedTea6 1.4.1)(6b14-1.4.1-0ubuntu13)OpenJDK 64位服务器虚拟机(构build14.0-b08,混合模式) class Tmp { public static void main(String[] args) { System.out.println("1>>1 = "+(1>>1)); System.out.println("1>>2 = "+(1>>2)); System.out.println("1>>31 = "+(1>>31)); System.out.println("1>>32 = "+(1>>32)); System.out.println("1>>33 = "+(1>>33)); } } 当我运行它时产生这个: 1>>1 = 0 1>>2 = 0 1>>31 = 0 1>>32 = 1 <———- should be 0 i think 1>>33 = 0 我也得到32的任何倍数相同的结果。 我需要写我自己的右移来检查这个吗?

Java:在负数上右移

我对负号右移操作很困惑,这里是代码。 int n = -15; System.out.println(Integer.toBinaryString(n)); int mask = n >> 31; System.out.println(Integer.toBinaryString(mask)); 结果是: 11111111111111111111111111110001 11111111111111111111111111111111 为什么右移一个负数不是1(符号位)?

无符号整数在Javascript中

我正在处理一个处理IP地址信息的页面,但是对整数签名这一事实感到窒息。 我正在使用按位运算符来加速它,但是第64位(有符号/无符号的标志)正在搞乱它。 有什么办法强制一个数字在Javascript中未签名? 它似乎工作正常,直到子网大于30,或小于2。 尝试这个: <html> <body> <script type='text/javascript'> document.write( (1 << 30) +"<br/>"); document.write( (1 << 31) +"<br/>"); document.write( (1 << 32) +"<br/>"); </script> </body> </html> 结果: 1073741824 -2147483648 1

如何在不使用++或+或其他算术运算符的情况下添加两个数字

如何在不使用++或+或其他算术运算符的情况下添加两个数字? 这是很久以前在一些校园访谈中提出的一个问题。 无论如何,今天有人问了一些关于操纵的问题,并且在答复中提到了斯坦福的一些小动作 。 我花了一些时间研究它,并认为实际上可能会有这个问题的答案。 我不知道,我找不到一个。 有答案吗?

了解PHP&(&符号,按位和)运算符

我经常在代码中使用($var & 1) ,如果$var是奇数,则返回true,如果是偶数,则返回false。 但是“&”究竟做了什么?

我应该使用#define,枚举或常量?

在我正在进行的C ++项目中,我有一个标志types的值,可以有四个值。 这四个标志可以合并。 标志描述数据库中的logging,可以是: 新纪录 删除logging 修改logging 现有logging 现在,对于每个logging我希望保持这个属性,所以我可以使用枚举: enum { xNew, xDeleted, xModified, xExisting } 但是,在代码中的其他地方,我需要select哪些logging对用户可见,所以我希望能够将其作为单个parameter passing,如: showRecords(xNew | xDeleted); 所以,我似乎有三种可能的应用: #define X_NEW 0x01 #define X_DELETED 0x02 #define X_MODIFIED 0x04 #define X_EXISTING 0x08 要么 typedef enum { xNew = 1, xDeleted, xModified = 4, xExisting = 8 } RecordType; 要么 namespace RecordType { static […]