php学习笔记位运算】的更多相关文章

位运算 源码:用二进制表示一个数,这个码就是源码. 比如2====00000000 00000000 0000000 00000010 正数的反码 源码 补码都一样 负数的源码是符号位取反.第一个位 符号位. 负数的反码=它的源码的符号位不变,其他位按位取反, 二进制的最高位是符号位,正数用0表示,负数用1表示. -1 的源码 1000000  0000000  0000000 0000001 -1的反码 1111111111111111111111111111110 -1的补码 =它的反码加1…
今天看了一下HashMap类的源码,在HashMap的源码中定义了初始空间的大小 static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; 当我看到了 1<<4 我就不知道是什么意思了,于是百度了一下,下面讲解一下原理: 1.表示方法:  在Java语言中,二进制数使用补码表示,最高位为符号位,正数的符号位为0,负数为1.补码的表示需要满足如下要求. (1)正数的最高位为0,其余各位代表数值本身(二进制数). (2)对于负数,通过对该数…
算数运算 1. 使用let命令 #!/sbin/bash var1=2 var2=3 let sum=var1+var2 echo $sum 使用let命令式,变量前不需要加$号 只用于整数运算,不适用浮点数 2. 使用$[...] []的使用与let类似 #!/sbin/bash var1=2 var2=3 sum=$[ var1+var2 ] echo $sum 通let一样,变量不需要使用$,但是计算结果需要在[前使用$ 只用于整数运算,不适用浮点数 3 使用$((...)) #!/sbi…
本篇文章讲述在学习CSAPP位运算LAB时的一些心得. 移位运算的小技巧 C/C++对于移位运算具有不同的策略,对于无符号数,左右移位为逻辑移位,也就是直接移位:对于有符号数,采用算术移位的方式,即左移仍为直接移位,右移时新产生的位用符号位补足.这种设计的目的是保证右移永远代表除以二,在不考虑溢出的情况下,左移永远代表乘以二:这里涉及到的一个规律是,二进制负数的左侧实际上有无数个1:二进制正数的左侧实际上有无数个0: 此外,当移位的长度大于等于数据的位数时,如果使用一个变量来代表移动的位数,则编…
没有什么前言?直接进入正题qwq 俩俩异或 求最值: 建trie树 O(n)枚举每个数找这个数的最值,每次反走就成,还可以剪枝一波(如果在某位已经小于ans显然可以直接return? void Insert(int val) { ; <<;i>=;i>>=) { :; if(!ch[x][to]) ch[x][to]=++node; x=ch[x][to]; } } //建树,懒得说 int Que(int val) { ,bs=; <<;i>=;i>…
一.理解什么是位运算 程序中的所有内容在计算机内存中都是以二进制的形式储存的(即:0或1),简单来说位运算就是直接对在内存中的二进制数的每位进行运算操作. 二.学习前先了解一下有哪些运算,运算符都怎么使用的,如下图所示. 对于上面的运算符做个基础的认识,接下来我们详细看一下每个运算符到底该怎么使用呢? 三.在讲位运算之前先讲一下进制转换,方便下文讲解位运算. 2进制.8进制.16进制.32进制.64进制等转换成10进制计算方法我得出一个公式:(^表示次方,如:2^2,即2的2次方,8^5即8的5…
一.基础知识 什么是位运算? 用二进制来计算,1&2:这就是位运算,其实它是将0001与0010做位预算   得到的结果是 0011,也就是3  2.位预算有多少种?(我们就将几种我们权限中会用到的) &  与运算    1&0=0    1&1=1   0&0=0 |   或运算    1|1=1     1|0=1    0|0=0 ~  非运算    ~1=0      ~0=1 二.如何与权限关联         1.逻辑是什么?         其实逻辑很…
我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注意:该方法只对除数是2的N次方幂时才有效. 在移位运算中我们可知,计算机中的数据都是0和1的序列,当我们把某个数字左移一位,该数字会扩大为原来的2倍:而将其右移一位时,该数字就会缩小为原来的1/2,即相当于对该数字做了一次被2整除的运算. 举例说明: 11的二进制是1011,如果右移一位的话,将变成0101,也就是5. 现在我们考虑11除以8…
进制 二进制   0 1组成,封2进1 八进制 0-7组成,封8进1 十进制 0-9组成,封10进1 十六进制 0-15组成,封16进1 printf以不同进制形式进行输出 变量的内存地址形式 变量在内存中是从高地址到低地址依次保存的,并且只保存二进制 查看内存地址的两种方式:%x和%p 各个类型变量的取值范围 类型修饰符 在64bit编译器环境下, int占用4个字节(32bit),取值范围是-231~231-1: short占用2个字节(16bit),取值范围是-215~215-1: lon…
我们都知道,求一个数被另一个数整除的余数,可以用求余运算符”%“,但是,如果不 允许使用求余运算符,又该怎么办呢?下面介绍一种方法,是通过位运算来求余,但是注 意:该方法只对除数是2的N次方幂时才有效. 在移位运算中我们可知,计算机中的数据都是0和1的序列,当我们把某个数字左 移一位,该数字会扩大为原来的2倍:而将其右移一位时,该数字就会缩小为原来的1/2, 即相当于对该数字做了一次被2整除的运算. 举例说明: 11的二进制是1011,如果右移一位的话,将变成0101,也就是5. 现在我们考虑1…