二进制转化、<<、>>、>>>移位运算

摘要:
1111111111111111111111111111111111 00111是-25的二进制表示值。示例:111111111111111011111 0101111反向码:0000000000000000000000001010000反向码+1。
参考资料:

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/2121
12/260
6/230
3/211
1/201

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

则: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 0101

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 1011

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 11111011

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 11111011

2、整体右移指2位数

0011 1111 1111 1111 1111 1111 1111 1110

3、转化为十进制

1073741822

免责声明:文章转载自《二进制转化、&amp;lt;&amp;lt;、&amp;gt;&amp;gt;、&amp;gt;&amp;gt;&amp;gt;移位运算》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇DBA知道这17条Linux命令,就够了!第14次作业下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL的binlog数据如何查看

binlog介绍 binlog,即二进制日志,它记录了数据库上的所有改变. 改变数据库的SQL语句执行结束时,将在binlog的末尾写入一条记录,同时通知语句解析器,语句执行完毕. binlog格式 基于语句,无法保证所有语句都在从库执行成功,比如update ... limit 1; 基于行,将每一次改动记为binlog中的一行.在执行一个特别复杂的...

Java动手实验及课后程序

课后作业 一、编写程序,消息框显示计算结果 设计思想:导入Scanner包,使用JOptionPane类来实现消息框的输入和结果的显示。 程序代码: package com; import java.util.Scanner; //导入Scanner包 import javax.swing.JOptionPane; public class Manner ...

进制间转换

1.进制间转换  十进制转二进制:十进制的数一直除以2,直到商为0,结果为逆序的每个余数。("除2取余,逆序排列"法,十进制转八、十六进制同理)     16(10)→10000(2)          十进制小数转二进制小数:小数一直乘以2,直到小数部分为0,结果为顺序的每个整数部分。("乘2取整,顺序排列"法)     0.25(10)→0.01(2)...

Python小白学习之路(九)—【字符串格式化】【百分号方式】【format方式】

写在前面: 最近的事情好像有很多。李咏的离去,让我觉得很突然,仿佛印象中就是主持节目的他,看着他和哈文的爱情,很是感动。离去,没有什么抱怨,只是遗憾。 总会感慨,时光的流逝。 好像真的很快,转眼间,我都这么大了。 最近,刘某人总说的一句话,小时候虽然很穷,但是很快乐 而现在,不仅仅是穷,而且还不快乐 想想还真是(手动捂脸) 最近身体不舒服,好像学习也停滞不...

FormData、Blob、File、ArrayBuffer数据类型

XMLHttpRequest 1.0 1.0 中xmlhttpRequest有2个重要的返回属性,reposeText,reposeXml。下面的数据类型都是2.0新增的 FormData对象 我们应该都用过jQuery,其中有个方法叫做serialize(), 作用就是表单序列化,也就是以查询字符串形式获得类表单post/get的数据给Ajax请求,例如...

VS环境下用thrift-C/C++接口开发hbase应用

一、前言 用C/C++开发hbase应用,需要用到thrift接口。在windows平台使用Visual Studio时,要比在linux平台复杂一些,主要是因为一些依赖库无法做到自动安装(类似yum install或 apt-get install那样),其次是因为Linux本来就是hbase及其依赖库的原生平台。但总体而言,两个平台的过程大体相似。 开...