首页 > 编程知识 正文

计算位移的方法,JAVA做计算器

时间:2023-05-04 21:23:16 阅读:116955 作者:587

如果有int类型的数量,并且值为5,则计算机将显示以下内容:

00000000 00000000 00000000 00000101

如果将5转换为二进制数,则为101,但int类型的数量占4字节(32位),因此前面填充了0堆。

我现在想知道,-5在计算机上是怎么显示的?

在计算机中,负数表示为正值的补数。

什么是补充代码? 这必须从原始代码,反码开始。

原码:以绝对值大小转换的二进制数,是一个称为原码的整数。

例如,00000000000000000000000000000000000000000000000001是5的原码。

反码:按位反取二进制数,得到的新二进制数称为原二进制反码。

逆操作是指原来为1,变为0。 原来是0,得到了1。 (1变0; 0变1 ) ) )。

例如,逐位反转,000000000000000000000000000000000000000000000000001,从而产生1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

(1111111111111111111111111111111111111111010是00000000000000000000000001的反码。

因为反码是相互的,所以也可以说如下。

1111111111111111111111111111111111111111111111100000000000000000000000000001相互为反码。

补数:反符号加1称为补数。

也就是说,要得到一个数的补数,首先要得到解码,然后在解码上加1,得到的数称为补数。

例如,00000000000000000000000000000000000000000000000000000001的反码是111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

那么,补码如下。

1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

因此,-5在计算机中表示为11111111111111111111111111111111111111111111111111111111111111111111111111。 十六进制:转换为0xFFFFFFFB。

再举一个例子,看看整数-1在计算机上是如何表示的。

如果这也是int类型,则如下所示。

1、先取1的源代码: 000000000000000000000000000000000000000000000000000000000001

2、得到反码: 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

3、补码: 111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111

-1在计算机上用二进制表示的话,就知道是全1。 十六进制是0 xfffffpackagecom.Sohu.hot.vis.servlet;

//*

*请进行位移测试

*

*@authorliweihan

*@time2017-05-0510:33

*/

公共类测试{

//*

java有三种类型的移位运算符

相当于:右移位运算符、num1、num除以2后的值

:无符号右移,忽略符号位,空位全部用0填充

*/

publicstaticvoidmain (字符串[ ] args ) {

intnumber=10;

printnownum(number );

到左(编号,1 );

toright(number,1 );

intnumber2=-10;

printnownum(number2;

到左(编号2,1 );

o right (编号2,1 );

intnumber3=3;

printnownum(number3;

to left (编号3,1 );

o right (编号3,1 );

intnumber4=-3;

printnownum(number4;

to left (编号4,1;

o right (编号4,1 );

}

//*

*@authorliweihan

*@time2017/5/511:05

* @说明打印当前数字

*@paramnumber

*/

私有语音打印机nownum (int number ) {

system.out.println ((=========================() ) ) ) )

//原始二进制文件

打印info (number;

system.out.println (' now number : ' number );

}

//*

*@authorliweihan

*@time2017/5/510:48

*@description向左移动offset位

*@paramnumber原始数值

*@paramoffset左移位数

*/

隐私声明工具(int number,intoffset ) {

//向左移动一位

number=number

打印info (number;

system.out.println (' now number : ' number );

}

//*

*@authorliweihan

*@time2017/5/510:50

* @向右移动描述偏移位

*@paramnumber原始数值

*@paramoffset右移位数

*/

隐私声明(int number,intoffset ) {

//向右偏移一位

number=numberoffset;

打印info (number;

system.out.println (' now number : ' number );

}

//*

*@authorliweihan

*@time2017/5/510:34

* @说明打印int的二进制数

*@paramnum进制

*/

私有语音打印机(intnum )。

系统. out.println (integer.tobinarystring (num );

}

//*

*@authorliweihan

*@time2017/5/510:42

* @描述二进制文件转换为十进制文件

*@parambinaryString二进制文件

*/

私有语音打印机(stringbinarystring ) {

system.out.println (integer.parseint (二进制字符串,2 ) );

}

}

结果:==========================

1010

NowNumber:10

10100

NowNumber:20

101

NowNumber:5

==========================

11111111111111111111111111110110

新编号:-10

11111111111111111111111111101100

新编号:-20

11111111111111111111111111111011

NowNumber:-5

==========================

11

NowNumber:3

110

NowNumber:6

1

NowNumber:1

==========================

11111111111111111111111111111101

NowNumber:-3

11111111111111111111111111111010

NowNumber:-6

11111111111111111111111111111110

NowNumber:-2

Processfinishedwithexitcode0

以下两篇文章值得参考:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。