`
zhao103804
  • 浏览: 124607 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

x&(x-1)表达式的意义

阅读更多

 

  /*
     * 求下面函数的返回值(微软) -- 统计1的个数
     * int a = 65536 + 1024 + 8 + 1;
        int c =getc(a);  
        System.out.println(c);
       
     * 将x转化为2进制,看含有的1的个数。
       注: 每执行一次x = x&(x-1),会将x用二进制表示时最右边的一个1变为0,
       因为x-1将会将该位(x用二进制表示时最右边的一个1)变为0。
     * */
    public static int getc(int x) {
        int countx = 0;
        while (x != 0) {
            countx++;
            x = x & (x - 1);
        }
        return countx;
    }
   
    /*
     * 判断一个数(x)是否是2的n次方
     * 注:
        (1) 如果一个数是2的n次方,那么这个数用二进制表示时其最高位为1,其余位为0。
        (2) == 优先级高于 &
     * */
    static int func(int x)
    {
        if( (x&(x-1)) == 0 )
            return 1;
        else
            return 0;
    }

 

注:从C语言而来

0
1
分享到:
评论
8 楼 zhao103804 2010-09-25  
yangguo 写道
zhao103804 写道
yangguo 写道
kimmking 写道
x&(x-1) =>  x-1


大错特错。

1000&0111 = 0111?!!


既然他错了,那请问他是想表达什么意思呢。。C的东西不太懂


这个跟C没有什么关系。你要学一下位运算,java也有。

哦,好的,有时间研究下,那个位运算,只知道一点
7 楼 yangguo 2010-09-25  
zhao103804 写道
yangguo 写道
kimmking 写道
x&(x-1) =>  x-1


大错特错。

1000&0111 = 0111?!!


既然他错了,那请问他是想表达什么意思呢。。C的东西不太懂


这个跟C没有什么关系。你要学一下位运算,java也有。
6 楼 zhao103804 2010-09-25  
kimmking 写道
yangguo 写道
kimmking 写道
x&(x-1) =>  x-1


大错特错。

1000&0111 = 0111?!!



看错了。

ps:如果是负数?


那请问你写的那个是什么意思呢。。
C语言就是大学的时候学过,不过忘记了,里面的东西往干净了
5 楼 kimmking 2010-09-25  
yangguo 写道
kimmking 写道
x&(x-1) =>  x-1


大错特错。

1000&0111 = 0111?!!



看错了。

ps:如果是负数?
4 楼 zhao103804 2010-09-25  
yangguo 写道
kimmking 写道
x&(x-1) =>  x-1


大错特错。

1000&0111 = 0111?!!


既然他错了,那请问他是想表达什么意思呢。。C的东西不太懂
3 楼 yangguo 2010-09-25  
kimmking 写道
x&(x-1) =>  x-1


大错特错。

1000&0111 = 0111?!!
2 楼 zhao103804 2010-09-25  
kimmking 写道
x&(x-1) =>  x-1

这位仁兄,请教下这个是什么意思呢。。我是搞JAVA的,C的东西不太懂。。谢不吝赐教
1 楼 kimmking 2010-09-25  
x&(x-1) =>  x-1

相关推荐

    数据结构课程设计----表达式类型的实现

    表达式可以是算术表达式(如2 + 3 * 4)、逻辑表达式(如A AND B)或关系表达式(如X > Y)。在计算机科学中,我们需要将这些抽象的表达式转化为机器可理解和执行的形式。 在数据结构方面,常见的方法是使用抽象...

    CAD多行文本去掉控制字符的正则表达式

    - 正则表达式:`\\h\d+x;|\\(\\h\d+x;)` - 替换逻辑:同上。 - 作用:移除文本中的水平位置乘法控制符。 9. **匹配制表符控制符(`\\t\d+x;` 或 `\(\\t\d+x;)`)** - 正则表达式:`\\t\d+x;|\\(\\t\d+x;)` - ...

    该文档系统阐述了线段与空间三角形交点的问题,非常简单细致

    \[\left| \begin{array}{ccc} x_1 + \lambda(x_2 - x_1) - x_1 & y_1 + \lambda(y_2 - y_1) - y_1 & z_1 + \lambda(z_2 - z_1) - z_1 \\ x_2 - x_1 & y_2 - y_1 & z_2 - z_1 \\ x_3 - x_1 & y_3 - y_1 & z_3 - z_1 \...

    JAVA正则表达式语法大全

    例如:`-1`, `-123`。 12. **匹配固定长度的任何字符**: - 表达式:`12ֻ볤Ϊ3ַ"^.{3}$"` - 解释:匹配任何三个字符。例如:`abc`, `123`。 13. **匹配大小写字母**: - 表达式:`13ֻ26Ӣĸɵַ"^[A-Za-z]+$...

    正则表达式笔记归纳

    2. **转义字符**:用于匹配特殊字符或具有特殊意义的字符。 - 示例:`\x22` 表示匹配双引号 `"`。 3. **重复限定符**: - `+`:匹配前面的子表达式一次或多次。 - 示例:`+ǰַĿ1λ` 表示匹配至少一个“ǰ”...

    正则表达式

    (x) 匹配x保存x在名为$1...$9的变量中 x|y 匹配x或y {n} 精确匹配n次 {n,} 匹配n次以上 {n,m} 匹配n-m次 [xyz] 字符集(character set),匹配这个集合中的任一一个字符(或元字符) [^xyz] 不匹配这个集合中的任何一个...

    c语言 表达式和简单程序设计PPT学习教案.pptx

    - 表达式是由一个或多个操作符和操作数组成的有意义的组合,如`s = 3.1415926 * r * r`。C语言的表达式可以被分类为七种不同类型。 3. **优先级**: - 优先级决定了运算符执行的顺序,通常遵循数学中的规则,例如...

    正则表达式速查表

    - `X{n}`:匹配前面的表达式恰好`n`次。 - `X{n,}`:匹配前面的表达式至少`n`次。 - `X{n,m}`:匹配前面的表达式至少`n`次,但不超过`m`次。 - **非贪婪模式** - `X??`:匹配前面的表达式零次或一次。 - `X*?`...

    Cron表达式

    - 只在日期和星期字段中使用,代表“无意义的值”,相当于占位符。 - **减号 (-)** - 表达一个范围,如在小时字段中使用`10-12`,则表示从10到12点,即10,11,12。 - **逗号 (,)** - 表达一个列表值,如在星期...

    jdk-8u241-windows-x64.rar

    1. **lambda表达式**:这是Java 8最重要的新增功能之一,它使得函数式编程风格成为可能。Lambda表达式可以被用来替代具有单个抽象方法的接口实现,简化代码并提高代码的可读性。 2. **函数式接口**:为了支持lambda...

    C语言程序设计基础试题及答案.doc

    24.已知int x=1,y=1,z=1;表达式"x+++y+++z++"的值是3。这个表达式的执行顺序是从左到右,先计算x++,然后计算y++,最后计算z++。 25.用十进制表示表达式"12|012"的值是14。这个表达式的执行顺序是从左到右,先计算...

    节C 表达式与基本程序控制结构PPT学习教案.pptx

    - 注意在`y -= x + 1`这样的表达式中,`y`的值会先减去`x + 1`的结果。 4. **自增(++)与自减(--)运算符** - 前缀运算符:`++m`或`--n`,先增加或减少操作数,然后使用新值。 - 后缀运算符:`m++`或`n--`,先...

    正则表达式II 正则表达式

    - `x|y`:匹配`x`或`y`中的任一个。 #### 三、实例解析 1. **简单的字符串匹配**: - `/^\[\t]*$/`:这个表达式用来匹配字符串中只包含`[`或`\t`的空白字符,且位于字符串的开头和结尾。 2. **身份证号码验证**...

    struts1.x&2_lib文件

    总的来说,Struts1.x和Struts2代表了Java Web开发中的两种不同架构风格,而"struts1.x&2_lib"文件则包含了这两个版本的库文件,对于理解和使用Struts框架进行Web开发具有重要意义。通过深入学习和实践,开发者可以...

    jdk-8u111-windows-x64.zip

    1. ** Lambda表达式**:这是Java 8引入的一项重大语法创新,允许函数作为方法参数或方法返回值。Lambda表达式使代码更加简洁、可读性更强,尤其在处理集合和并发时非常有用。 2. ** 方法引用和构造器引用**:与...

    正则表达式 范例.txt正则表达式 范例.txt

    下面将逐一解析这些正则表达式,帮助理解它们所代表的意义以及在实际应用中的用途。 ### 数字匹配 1. **整数匹配** - `^\d+$`:匹配由一个或多个数字(0-9)组成的字符串,即正整数。 - `^[0-9]*[1-9][0-9]*$`:...

    JS正规表达式大全

    - `search()`:返回字符串中第一个匹配项的索引,否则返回-1。 - `replace()`:替换字符串中匹配的部分。 - `split()`:根据匹配的模式拆分字符串。 4. **标志(Flags)**: - `g`:全局搜索,匹配所有出现的...

    Oracle正则表达式详解(用法+实例)

    掌握了各种字符元的意义后,就能更好地利用正则表达式来处理文本数据。 #### 二、Oracle中支持的正则表达式函数 Oracle 10g 引入了一系列新的函数来支持正则表达式的使用,包括 `REGEXP_LIKE`、`REGEXP_INSTR`、`...

    现代控制理论答案,很详细的

    **例1-1**:给定一个模拟结构图,要求建立其状态空间表达式。 - **状态方程**:根据题目中的信息,我们可以得到状态方程为: \[ \begin{aligned} \dot{x}_1 &= -K_1 x_1 + K_2 x_2 - K_3 x_3 + K_4 x_4 + K_5 u ...

Global site tag (gtag.js) - Google Analytics