为了账号安全,请及时绑定邮箱和手机立即绑定

二进制基础

难度入门
时长50分
学习人数
综合评分9.07
609人评价 查看评价
9.4 内容实用
9.0 简洁易懂
8.8 逻辑清晰
  • 中国发明了二进制,外国人精通了电脑;中国人发明的火药,外国人使用火药侵略中国。发明一点都不牛逼,充分好好利用感觉才是最牛逼的!不能停留在发明上了,努力吧!@
  • 位运算的几个应用: 1) 判断int型变量a是奇数还是偶数 a&1 = 0 偶数 a&1 = 1 奇数 2) 取int型变量a的第k位 (k=0,1,2……sizeof(int)),即a>>k&1 (先右移再与1) 3) 将int型变量a的第k位清0,即a=a&~(1<<k) (10000 取反后为00001 ) 4) 将int型变量a的第k位置1,即a=a|(1<<k) 5) int型变量循环左移k次,即a=a<<k|a>>16-k (设sizeof(int)=16) 6) int型变量a循环右移k次,即a=a>>k|a<<16-k (设sizeof(int)=16) 7)对于一个数 x >= 0,判断是不是2的幂。 boolean power2(int x){return ( (x&(x-1))==0) && (x!=0);} (8)不用temp交换两个整数 void swap(int x , int y) {x ^= y;y ^= x;x ^= y;} (9)计算绝对值 int abs( int x ){int y ;y = x >> 31 ; return (x^y)-y ; //or: (x+y)^y } 10)取模运算转化成位运算 (在不产生溢出的情况下) a % (2^n) 等价于 a & (2^n - 1) 11)乘法运算转化成位运算 (在不产生溢出的情况下) a * (2^n) 等价于 a<< n 12)除法运算转化成位运算 (在不产生溢出的情况下) a / (2^n) 等价于 a>> n 例: 12/8 == 12>>3 13) a % 2 等价于 a & 1 14) if (x == a) x= b; else x= a; 等价于 x= a ^ b ^ x; 15) x 的 相反数 表示为 (~x+1) 16)输入2的n次方:1 << 19 17)乘除2的倍数:千万不要用乘除法,非常拖效率。只要知道左移1位就是乘以2,右移1位就是除以2就行了。比如要算25 * 4,用25 << 2就好啦
  • (一)按位与& 特殊运输 (1)清零,如果想将一个单元清零,即使其全部二进制位为0,只要与一个各位都是零的数值相与,结果为零。 (2)取一个数中指定位:找一个数,对应x要取的位,该数的对应位为1,其余位为零,此数与x进行“与运算”可以得到x中的指定为 (二)按位或| 特殊用法 常用来对一个数据的某些位置1:找到一个数,对应x要置1的位,该数的对应位为1,其余位为零。此数与x相或可使x中的某些位置1。 (三)异或^ 特殊用法 (1)使特定位翻转:特定位异或1 (2)与0相异或,保留原值 (3)两个变量交换值 1.借助第三个变量来实现 2.利用加减法实现两个变量的交换 A=A+B;B=A-B;B=A=B 3.异或运算 一个数异或本身等于0和异或运算符合交换律 A=A^B;B=A^B;A=A^B (四)取反与运算~ 对一个二进制数按位取反,即将0变为1,1变0 (五)左移<< 将一个运算对象的各二进制位全部左移若干位, (六)右移>> 将一个数的各二进制位全部右移若干位,正数左补0,负数左补1,右边丢弃。操作数每右移一位,相当于该数除以2 (七)无符号右移运算>>> 各个位向右移指定的位数。右移后左边空出的位用零来填充。移除右边的位被丢弃。 负数以其正数的补码形式表示 反码加1称为补码 32位整数,最高位为1,就是负数 负数 左移或者右移
  • 二进制的起源 二进制的发明可追溯至八卦的诞生之时。[1] [1]莱布尼茨.论单纯使用0与1的二进制算术——兼论二进制用途以及伏羲所使用的古代中国符号的意义[J].皇家科学院年鉴,1705,1703:85-89
  • arr[0]=(byte)((int)(id>>0*8)&0xff); 0xff二进制为1111 1111 ,十进制为255. 十六进制中,用从0-9表示数字的0-9,用A-F表示十进制的10-15 所以F就是十进制的15,化成二进制的就是1111 = 2^3 + 2^2 + 2^1 + 2^0 = 15 byte类型8位,int类型32位,为了避免数据转换错误,通过 & 0xff将高24位清零 java中不超过int的取值范围的数据类型,都会提升为int的,直接arr[0]=(byte)(id>>0*8&0xff) 不可以吗? 可以,应该只是为了严谨。
    10:47
    看视频
  • @二进制基础——位运算 一、异或作用 1、对某个数定位翻转:0^0=0 1^0=1 0^1=1 1^1=0 · 翻转位异或1 · 不翻转位异或0 2、两个变量值交换:A=A^B;B=A^B;A=A^B(条件:A!=B) 二、左右移 1、左移<< :左丢弃,右补0,但注意整形为32位 2、右移>> :右丢弃,左补0(整数)或者1(负数) 3、无符号右移>>> : 右丢弃,左补0
  • 两个变量交换值的三种方法
    07:54
    看视频
  • &与运算,同为1时结果为1.其余为0 用途:1当需要将特定位置清0时。可用 该数 & 0000(对应想清零的位置)。 2.当需要取得特定位置的值时。可用该数&1111(对应想取得的位置)
首页上一页1234567下一页尾页

举报

0/150
提交
取消
课程须知
小伙伴们注意啦!~本门课程前三章的内容可以零基础学习。第四、五章的内容在学习前需要了解Java的基础知识。
老师告诉你能学到什么?
通过课程的学习,您可以了解二进制的由来,掌握二进制和其他进制之间进行进制转换的方法,掌握如何进行位运算,为所有计算机课程的学习提供基础。
意见反馈 帮助中心 APP下载
官方微信