参考资料:

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. vue-router页面传值及接收值

    主页  “去第二个页面”方法传值1 <template> <div id="app"> <div><router-link to=&quo ...

  2. 用.net开发音频编辑软件

    智能语音机器人软件免不了需要对语音流进行处理,主要包括语音的播放.录制.读取.保存.图形化展示和剪辑等功能.这方面专业的软件有Adobe Audition,为了方便用户使用,我用.net实现了上述功能 ...

  3. c# 判断当前时间是否在某一时间段内

    //获取当前系统时间并判断是否为服务时间 TimeSpan nowDt = DateTime.Now.TimeOfDay; TimeSpan workStartDT = DateTime.Parse( ...

  4. 终于,我们的新产品Fotor Slideshow Maker上线了!!

    辛苦了大半年,使用纯网页技术全新打造的首个交互式Slideshow产品终于上线了,现在是 http://slideshow.fotor.com,希望能尽快推出中文版! http://blog.foto ...

  5. 程序媛计划——mysql索引

    定义: 索引是一种单独的.物理的对数据库表中一列或多列的值进行排序的一种存储结构   #为字段创建索引 #在表中的字段中创建索引mysql> create index ind_score on ...

  6. Android 的开源项目的网址

    各种各样的Android实例  https://blog.csdn.net/qq153843338/article/details/43161669 Android 教程 http://www.run ...

  7. “全栈2019”Java多线程第二十五章:生产者与消费者线程详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  8. 世界线(bzoj2894)(广义后缀自动机)

    由于春希对于第二世代操作的不熟练,所以刚使用完\(invasion process\)便掉落到了世界线之外,错综复杂的平行世界信息涌入到春希的意识中.春希明白了事件的真相. 在一个冬马与雪菜同时存在的 ...

  9. Android 美学设计基础 <3>

    本期接着对Android的美学设计的分享. 1.3 Light and shadows 光学与阴影 1.3.1 Light 在素材设计的环境中,我们会用虚拟的光来照亮UI界面.主灯光会产生尖锐,有方向 ...

  10. 六,mysql优化——小知识点

    1,选择适当的字段类型,特别是主键 选择字段的一般原则是保小不保大,能占用字节小的字段就不用大字段.比如主键,建议使用自增类型,这样节省空间,空间就是效率!按4个字节和按32个字节定位一条记录,谁快谁 ...