java代码实现补码 java 补码

java求补码~在c和java语言中都是求反码,或者叫位非NOT运算 。
java的运算有特殊性:
4的二进制为100 ,
执行~4后转换成32位有符号整型(int),值为11111111111111111111111111111011
打印时,按有符号解释成-5 。
C语言的运算和java大类相同 , 但要注意几点
1、注意意无符号的情况 。unsigned int i=~4;的值就是4294967291
2、注意变量的数据长度 。在c中,char和char之间,short和short之间 , long和long之间的加减都按本身定义的长短 。而不像java都统一转换成32位int后进行运算
3、注意显示时符号的有无 。printf中的%d和\u对显示结果就有本质区别
关于JAVA二进制补码首先对十进制的整型数据转化为二进制,如果整型是负的 , 求得的二进制取反再加上1就是补码 , 如果是正数 , 其补码就是本身 。
菜鸟求教:java 中的“取补码”问题?。?/h2>~
(位运算符),按位非,其运算法则为:如果某个数对应位上是1,则该位上最后得到的结果就是0;反之,如果某个数对应位上是0,则该位上最后得到的结果就是1.也就是有些人说的取反的意思,记住取反是在其转化为二进制后进行的 。
补码的运算楼主可以看看:2的补码为
2转换为二进制
~
00000010
结果
11111101
可以看出结果为一个负数,因为最高位为符号位 , 1为负数,0为正数 。负数的补码的规则为取反再加1,过程为
11111101
取反
00000010
加1
【java代码实现补码 java 补码】00000011
最后把00000011转为十进制3 , 但不要丢了符号,因此2的补码为-3.
不知楼主看懂了么 。
ps:楼主应该知道十进制、二进制、八进制、十六进制的相互转换吧,不知道的话 , 可要好好补补?。?
编程实现能够输出给定整数i的二进制补码 。c/c,java语言任选参考例子如下:
import java.util.*;
public class TestBina{
//输出二进制的函数,传入参数i,输出其二进制补码
static void printBinaryInt(int i){
System.out.println("int:" i ",binary:");
System.out.print("");
//通过以下循环,从高到低每次取出i的补码的每一位数
for(int j=31;j=0;j--)
if(((1j)i)!=0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
//主函数调用printBinaryInt(int i)
public static void main(String [] args){
Random rand = new Random();
int i = rand.nextInt();
int j = rand.nextInt();
printBinaryInt(i);
printBinaryInt(j);
printBinaryInt(10);
printBinaryInt(-10);
}
}
用java输出一个给定整数的二进制补码给你一个:
import java.util.*;
public class TestBina{
static void printBinaryInt(int i){
System.out.println("int:" i ",binary:");
System.out.print("");
for(int j=31;j=0;j--)
if(((1j)i)!=0)
System.out.print("1");
else
System.out.print("0");
System.out.println();
}
public static void main(String [] args){
Random rand = new Random();
int i = rand.nextInt();
int j = rand.nextInt();
printBinaryInt(i);
printBinaryInt(j);
printBinaryInt(10);
printBinaryInt(-10);
}
}
java位运算中输出补码表示的二进制数遇到的问题你的问题是考虑的时候,忽略了最高位存储数据的正负号,在编写代码的时候最高位需要单独考虑 。修改以后,首先根据数据的正负来决定最高位,然后进行转二进制计算 。
public class Test6
{
public static void main(String args[])
{
int temp = -10;
if(temp0){
System.out.print(0);
}
else{
System.out.print(1);
}
for(int i=30; i=0; --i)
{
System.out.print( bit_on(temp, i) );
}
}
public static int bit_on(int temp, int pos)
{
if( ( temp(1pos) )0 )
return 1;
else
return 0;
}
}
java代码实现补码的介绍就聊到这里吧,感谢你花时间阅读本站内容 , 更多关于java 补码、java代码实现补码的信息别忘了在本站进行查找喔 。

    推荐阅读