参考资料:

https://www.cnblogs.com/wxb20/p/6033458.html

https://www.cnblogs.com/joahyau/p/6420619.html

https://www.cnblogs.com/yulinfeng/p/6602902.html

https://www.cnblogs.com/hongten/p/hongten_java_yiweiyunsuangfu.html

https://www.cnblogs.com/xkfz007/articles/2590472.html(带小数)

一、十进制转化二进制

1、正数转化:

  正数25:

25/2  12  1
12/2  6  0
6/2  3  0
3/2  1  1
1/2  0  1

最后一列,倒序排列即为二进制值。

则:25的二进制为:11001 然后32位,高位补0,即:

0000 0000 0000 0000 0000 0000 0001 1001

2、负数转化:

  负数-25

1、先算出正数的二进制。

2、求反码,即二进制中1变0,0变1

3、反码+1

所以-25

1、对应的正数25对应的二进制为:

0000 0000 0000 0000 0000 0000 0001 1001

2、反码:

1111 1111 1111 1111 1111 1111 1110 0110

3、反码+1:(补码)(如果最后一位本身为1,则进位,列如1011  +1  为1100)。

1111 1111 1111 1111 1111  111 1110 0111

即为-25的二进制表示值。

二、二进制转化十进制

1、正数转化(不够32位高位补0)

011 1001

654 3210

则为:0*2^6+1*2^5+1*2^4+1*2^3+0*2^2+0*2^1+1*2^0=0+32+16+8+0+0+1=57

2、负数转化(最高位为1则为负数)

1、先算反码,即二进制中1变0,0变1

2、反码+1(补码)

3、算出对应的正数在加上负号。

例:

1111 1111 1111 1111 1111 1111 1010 1111

反码:

0000 0000 0000 0000 0000 0000 0101 0000

反码+1(如果最后一位本身为1,则进位,列如1011  +1  为1100)。

0000 0000 0000 0000 0000 0000 0101 0001

算正数:

1*2^6+0*2^5+1*2^4+0*2^3+0*2^2+0*2^1+1*2^0=64+0+16+0+0+0+1=81

即十进制为-81.

3、八进制、十六进制、十进制、二进制

01111111111111111111111111111001

十进制负数转八进制、十六进制

负数转换成八进制、十六进制,只需在补码(二进制)的基础上,3位合成一位计算,或者4位合成一位计算

-3的转换成二进制为:

1111 1111 1111 1111 1111 1111 1111 1101

八进制则将-3的二进制从右至左每3位为一个单元,不够三位用0补 即:

011 111 111 111 111 111 111 111 111 111 101

计算每一个单元,结果为:37777777775

十六进制则将-3的二进制从右至左每4位合并为一个单元,即:

1111 1111 1111 1111 1111 1111 1111 1101

计算后为: FFFFFFFD

转换十进制-3为八进制和十六进制

十六进制(0,1,2,3,4,5,6,7,8,9,A,B,C,D,F)

三:>>,<<,>>>移位运算

1、<<

<<,有符号左移位,将运算数的二进制整体左移指定位数,低位用0补齐。

正数:5<<2

1、转化为二进制:

0000 0000 0000 0000 0000 0000 0000 0

2、整体左移指2位数

0000 0000 0000 0000 0000 0000 0001 0100

3、转化为十进制

1*2^4+1*2^2=16+4=20

M<<N相当于M*2^n.

负数:-5<<2

1、转化为二进制:

1111 1111 1111 1111 1111 1111 1111

2、整体左移指2位数

1111 1111 1111 1111 1111 1111 1110 1100

3、转化为十进制

-20

M<<N相当于M*2^n.

2、>>

>>有符号右移位,将运算数的二进制整体右移指定位数,正数高位用0补齐,负数高位用1补齐(保持负数符号不变)

正数:5>>2

1、转化为二进制:

0000 0000 0000 0000 0000 0000 0000 0101

2、整体右移指2位数

0000 0000 0000 0000 0000 0000 0000 0001

3、转化为十进制

1*2^0=1

M>>N相当于M/2^n 取商

负数:-5>>2

1、转化为二进制:

1111 1111 1111 1111 1111 1111 1111 1011

2、整体右移指2位数

1111 1111 1111 1111 1111 1111 1111 1110

3、转化为十进制

-2

M<<N相当于如果运算数是偶数,那么那么它的运算结果就是 x = -(|x| / 2),如果运算数是奇数,那么它的运算结果就是 x = -(|x| / 2) - 1

3、>>>

>>>无符号右移位,不管正数还是负数,高位都用0补齐(忽略符号位)

1、正数的>>>无符号右移位和>>有符号右移位计算结果相同

2、负数

-5>>>2

1、转化为二进制:

1111 1111 1111 1111 1111 1111 1111 1011

2、整体右移指2位数

0011 1111 1111 1111 1111 1111 1111 1110

3、转化为十进制

1073741822

二进制转化、<<、>>、>>>移位运算的更多相关文章

  1. JAVA:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题(5)

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  2. Java学习第五篇:二进制(原码 反码 补码),位运算,移位运算,约瑟夫问题

    一.二进制,位运算,移位运算 1.二进制 对于原码, 反码, 补码而言, 需要注意以下几点: (1).Java中没有无符号数, 换言之, Java中的数都是有符号的; (2).二进制的最高位是符号位, ...

  3. java 移位运算

    移位运算 :将整数转化为二进制(以补码的形式),按位平移. <<     左移 >>     右移 >>>   无符号右移 << 右移: 按位做平 ...

  4. 【原创】Java移位运算

    学习移位运算,首先得知道参与移位运算的类型的位数,那先来复习下Java基础类型的占位数吧. Java基础类型 Java基础类型总结一览表 类型 二进制位数 最大值 最小值 初始化值 表示形式 带符号 ...

  5. Java中的位运算符、移位运算

    一.位运算 Java中有4个位运算,它们的运算规则如下: (1)按位与 (&)  :两位全为1,结果为1,否则为0: (2)按位或  (|)   :两位有一个为1,结果为1,否则为0: (3) ...

  6. C语言移位运算

    移位运算有两种:>>(右移),<<(左移). a>>b表示将a的二进制值右移b位. a<<b 表示将a的二进制值左移 b位.要求 a和 b都是整型, b ...

  7. MATLAB的两种移位运算

    MATLAB的两种移位运算: 1)circshift矩阵移位 circshift:循环移位数组 语法:B = circshift(A,shiftize) 说明: B  = circshift(A,sh ...

  8. C++ 移位运算与进制转换 浅析

    移位运算包括"逻辑移位"(logical shift)和"算术移位"(arithmetic shift). 逻辑移位:移出去的位丢弃,空缺位(vacant bi ...

  9. Java学习日记基础篇(八) —— 二进制、位运算、位移运算

    二进制 二进制是逢2进位的进位置,0,1是基本算符 原码反码补码 在基本数据类型那里,有详细解释 二进制的最高位数是符号位:0表示整数,1表示负数 正数的原码,反码,补码都一样 负数的反码 = 它的原 ...

随机推荐

  1. 几条shell命令

    windows: route add 158.0.0.0 mask 255.0.0.0 158.137.38.1 metric 3 linux: netstat -apn  查看所有端口使用,可查看端 ...

  2. Spring 开发第一步(四)Spring与JDBC事务

    Spring使用各种不同的TransactionManager来管理各种不同数据源事务底层(比如jdbc数据源.hibernate数据源.JPA数据源等等).在此基础上使用各种对应的Template来 ...

  3. 768. Max Chunks To Make Sorted II

    This question is the same as "Max Chunks to Make Sorted" except the integers of the given ...

  4. mysql enterprise backup入门使用

    **************************************************************--1.全备******************************** ...

  5. 2014年10月Android面试总结

    最近打算跳槽,所以到外面逛了一圈,发现外面的世界还是比较精彩的,同时也认识了自己的一些不足,以及作为一个Android开发者,自己后面需要掌握的东西做一下列举. 先介绍下本人的工作经历吧,本人11年7 ...

  6. VmWare扩展硬盘分区

    扩展硬盘 对硬盘进行分区 () 查看现有的硬盘分区情况 [mysql@china ~]$ df -h Filesystem Size Used Avail Use% Mounted on /dev/m ...

  7. 为什么程序员老在改 Bug,就不能一次改好吗?

    程序员的日常三件事:写Bug.改Bug.背锅.连程序员都自我调侃道,为什么每天都在加班?因为我的眼里常含Bug. 但是真的有这么多Bug要改吗?就不能一次改完吗? 程序员听这问题后要拍键盘了,还!真! ...

  8. rolling方式修改oplog

    在 3.4之前版本 , 修改oplog 是一个非常麻烦的事情, 要停数据库 , rolling方式适合 3.4 之前版本修改oplog的大小 1. 配置文件注释 replSet2. 配置文件 oplo ...

  9. 【NOIP2017】逛公园 最短路+DP

    诶,去年场上不会处理$0$的环,只拿了$60$有点可惜. 我们先不管边边权为$0$的边. 我们先跑一次最短路,令$dis[u]$表示从$1$至$u$的最短路的长度. 那么根据题目的要求,从起点走到$u ...

  10. Mac下使用zsh不执行/etc/profile文件

    Mac下使用了zsh会不执行/etc/profile文件,当然,如果用原始的是会执行. 转而执行的是这两个文件,每次登陆都会执行: ~/.zshrc与/etc/zshenv与/etc/zshrc 所以 ...