参考资料:

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. 射线与平面的相交检测(Ray-Plane intersection test)【转】

    射线的定义 在欧几里德几何中,射线的定义是:直线上一点和它一旁的部分.由此可知,射线有两个性质,一是只有一个端点,二是一端无限延伸. 射线的参数方程 其中p0是射线的起点, u是射线的方向向量,t & ...

  2. vs2017使用rdlc

    写在前面:因为公司要求做个批量打印工具,以前用Delphi+FastReport开发的,现在因为公司就剩下一个Delphi开发工程师了,还外出,所以这是就落在我身上.因为这个打印工具不需要使用人员设计 ...

  3. Win(Phone)10开发第(5)弹,本地媒体服务器的一些注意事项

    首先有个wp上的http服务器 http://wphttpserver.codeplex.com/ 使用方式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ...

  4. C#默认以管理员身份运行程序实现代码

    using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; names ...

  5. Math-645. Set Mismatch

    The set S originally contains numbers from 1 to n. But unfortunately, due to the data error, one of ...

  6. VSCode保存插件配置并使用 gist 管理代码片段

    setting sync 保存配置 由于公司和家里都使用 VSCode 作为主要编辑器,同步配置是最紧要的.VSCode 提供了setting sync插件,很方便我们同步插件配置.引用网上教程: 在 ...

  7. Archlinux Setup AUR

    方案一 pacman -Sy yaourt yaourt -Sy pacaur pacaur -Sa xxx 方案二 git clone git clone https://aur.archlinux ...

  8. jmeter-linux下运行

    1.2 在命令行下运行脚本 将1.1中的脚本保存,在编辑是随时可以保存,保存后是一个jmx格式的文件(如图),这个就是要在命令行下运行的脚本(作为参数运行).这个脚本文件可以不包含1.1中第四和第五步 ...

  9. Swift 里字符串(一)概览

    感受一下字符串相关的源文件个数  String 概览 是一个结构体 只有一个变量,类型是 _StringGuts  如上所示,String 真正的内容在__StringStorage或者__Sha ...

  10. (转)LINUX CENTOS7下安装PYTHON

    LINUX CENTOS7下安装PYTHON 原文:http://www.cnblogs.com/lclq/p/5620196.html Posted on 2016-06-27 14:58 南宫羽香 ...