if(i&1==1) 表示 如果是 奇数 则。。。
i&1 -- 按位与运算,取 2进制整数 i 的最低位,
如果最低位是1 则得1,
如果最低位是0 则得0。
奇数 i 的最低位 是1,
偶数i 的最低位 是0。 负数二进制表示: 计算机对有符号数(包括浮点数)的表示有三种方法:原码、反码和补码, 补码=反码+1。在 二进制里,是用 0 和1 来表示正负的,最高位为符号位,最高位为 1 代表负数,最高位为 0 代表正数。

以负数-5为例:


1.先将-5的绝对值转换成二进制,即为0000 0101;


2.然后求该二进制的反码,即为 1111 1010;


3.最后将反码加1,即为:1111 1011

 
以java为例:
int x1=8;
int x2=-8;
int y1=7;
int y2=-7;
注意:int的宽度为32位,最高位为符号位,机内负数以补码表示,上面的4变量x1,x2,y1,y2的机内码分别是(二进制形式)
x1:0000 0000 0000 0000 0000 0000 0000 1000
x2:1111 1111 1111 1111 1111 1111 1111 1000
y1:0000 0000 0000 0000 0000 0000 0000 0111
y2:1111 1111 1111 1111 1111 1111 1111 1001 x1>>>1得:
0000 0000 0000 0000 0000 0000 0000 0100 十进制为4
x2>>1得:
1111 1111 1111 1111 1111 1111 1111 1100 十进制为-4
y1>>1得:
0000 0000 0000 0000 0000 0000 0000 0011 十进制为3
y2>>>1得:
0111 1111 1111 1111 1111 1111 1111 1100 十进制为2147483644
 

交换两个变量的值 不要新的变量的方法:
a=a+b;
b=a-b;
a=a-b' 或者
a=a^b;
b=a^b;
a=a^b;

i&1、负数二进制的更多相关文章

  1. 黑马程序员_毕向东_Java基础视频教程——进制转换之负数二进制(随笔)

    进制转换之负数二进制 负数的二进制表现形式 6 = 110 -6 : 其实就是 6 的二进制取反再 + 1 一个整数在内存中是占 4 个字节 **取反:将二进制里的 1 变成 0,0 变成 1. 以6 ...

  2. 关于c语言中负数位移位操作的漫谈

    近期有个朋友在程序中使用了对16进制数做负数移位(编译器是gcc),本人最次产生好奇.所以研究了一些. 对一个数做负数位移位的操作是不规范的,可是是可行的. 详细样例: char tmp = 0x10 ...

  3. [java]负数的二进制编码——越是基础的越是要掌握

     ),第二位代表有几个10(即几个101),第三位代表有几个100(即有几个102)-,用小学课本上的说法就是:个位上的数表示几个1,十位上的数表示向个10,百位上的数表示几个100-- 同理可证 ...

  4. C++学习(四)(C语言部分)之 二进制

    二进制学习时的笔记(其实也没什么用,留着给自己看的) 二进制简介只有 0 1 优点:1.二进制状态简单2.可靠性.稳定性高3.运算规则简单,简化设计4.通用性强 二进制计算正数二进制十进制转二进制(除 ...

  5. Java编程的逻辑 (4) - 整数的二进制表示与位运算

    ​本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http: ...

  6. Day05_C操作符及二进制补码计算

    回顾:  1.数据类型  2.二进制(八进制,十六进制) --------------------------------------------------------- 计算机中不可以使用负号表示 ...

  7. [javaSE] 进制转换(二进制十进制十六进制八进制)

    十进制转二进制,除2运算 十进制6转二进制是 110  (注意从右往左写,使用算式从下往上写) 二进制转十进制,乘2过程 二进制110转十进制  0*2的0次方+1*2的1次方+1*2的2次方=6 对 ...

  8. C语言数据类型取值范围

    一.获取数据类型在系统中的位数 在不同的系统中,数据类型的字节数(bytes)不同,位数(bits)也有所不同,那么对应的取值范围也就有了很大的不同,那我们怎么知道你当前的系统中C语言的某个数据类型的 ...

  9. 毕向东JAVA基础25天教程目录

    视频目录:day01-01-基本常识day01-02-Java的跨平台性day01-03-Java环境搭建(安装)day01-04-Java环境搭建(环境变量配置)day01-05-Java环境搭建( ...

随机推荐

  1. 开发中可能会用到的几个 jQuery 小提示和技巧 (转)

    转自:http://www.cnblogs.com/lhb25/p/useful-jquery-tips-and-tricks.html 今天,我们将分享一些很有用的技巧和窍门给 jQuery 开发人 ...

  2. ajax的来龙去脉

    这是我在博客园写的第一遍博客,之前都是只看不写,在园子里学到了不少的东西,现在也想着把自己的一些感悟写出来给大家分享一下. ajax技术可以说是Web2.0应用程序的技术基础,尽管软件经销商和开源社区 ...

  3. CentOS 7 修改hostname

    centOS 7 里面修改hostname的方式有所改变,修改/etc/hosts和/etc/sysconfig/network两个文件已经不能生效.使用的新命令是 : hostnamectl set ...

  4. oracle存储过程写法。

    create or replace procedure testwzm(v_gdjdm in varchar2) isv_id varchar2(10);v_xlname varchar2(100); ...

  5. iOS 改变UITextField中光标颜色

    第一种: [[UITextField appearance] setTintColor:[UIColor blackColor]]; 这个方法会影响整个app的所有UITextFiled... 第二种 ...

  6. Dapper事务操作

    1.报错信息: 如果分配给命令的连接位于本地挂起事务中,ExecuteNonQuery 要求命令拥有事务.命令的 Transaction 属性尚未初始化. 出现这种原因是在执行Execute语句时,没 ...

  7. Qt5遇到的问题

    好久没用Qt了,今天又重新安装了一个,结果遇到不少问题 本机环境:VS2015,Qt5.7 装好后,就新建工程测试了一下,结果无法编译,提示 :-1: error: cannot open C:\Us ...

  8. mysql 5.5 升级到 mysql 5.6

    目前MySQL数据库软件升级到5..26版本,主要有两种方法.一种是停机升级,即在现有环境下先停止数据库,然后升级数据库软件版本和数据库版本:另外一种是采用不停机的主从升级(master--slave ...

  9. 使用padding-top实现自适应背景图片

    在父级容器中设定最大的宽度,由于背景图片会出现塌陷的情况,有宽度无高度, 则,在图片容器中添加以下属性 padding-top:%(计算方式:图片的高度/图片的宽度*100%) background- ...

  10. javascript时钟

    <script language="JavaScript" type="text/javascript">         function now ...