java128
⑴ java中有符号128二进制怎样表示啊/
0000 0000 1000 0000 128
1111 1111 1000 0000 -128
正的有几位在前面补0 ,负的补1
⑵ java中有符号128二进制怎样表示啊/
用8位标识不了-128吧?有一位是符号位,8位的数,只能表示-127~127.
如果用16位的话,-128的补码就是1111111110000000,128的补码是0000000010000000.
-----------------------------------------------------------------------------------------------------
安卓精英团为你解答
安卓精英团欢迎各位精英加入
⑶ java把字符串类型128转换成字节怎么做
String str = "128";
str.getBytes(); //就是你要的结果
//以下为一个转码的操作,自己可以作为参考:
String newStr = new String(str.getBytes("ISO-8859-1"),"UTF-8"); //把一个ISO-8859-1编码的字符串改为UTF-8的编码格式。 这个一般针对中文字符串才会使用。
⑷ java中二进制对应的十进制是1、2、4、8、16、32、64、128,那128之后呢
二进制转十进制:
二进制:1101.011 对应的是 2^3+2^2+2^0+2^(-2)+2^(-3)
十进制 : 转 :二进制
1 : 转 : 1 --> 2^0
2 : 转 : 10 --> 2^1
4 : 转 : 100 --> 2^2
....
128 : 转 :10000000 -->2^7
256 : 转 :100000000 -->2^8
要是我表达的不够清楚可以追问我。
⑸ java有没有128位长整数的数据类型
Java定义了4个整数类型:字节型(byte),短整型short),整型(int),长整型(long)。
这些都是有符号的值,正数或是负数。Java 不支持仅仅是正的无符号的整数。许多其他计算机语言,包括C/C++,支持有符号或无符号的整数。然而,Java的设计者感到无符号整数是不必要的。具体地说,他们感到无符号(unsigned)概念主要被用来指定高位(high-orderbit)状态,它定义了当int表示一个数字时的符号。你将在第4章中看到,Java对高位含义的管理是不同的,它通过增加一个专门的“无符号右移”运算符来管理高位。这样,就不需要无符号整数了。
整数类型的长度(width)不应该被理解为它占用的存储空间,而应该是该类变量和表达式的行为(behavior)。只要你对类型进行了说明,Java的运行环境对该类的大小是没有限制的。事实上,为了提高性能,至少字节型和短整型的存储是32位(而非8位和16位),因为这是现在大多数计算机使用的字的大小。这些整数类型的长度和变化范围如表3-1所示:
表3-1 整数的各种类型及特性
名称 长度 数的范围
长整型 64 –9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
整型 32 –2,147,483,648 ~ 2,147,483,647
短整型 16 –32,768 ~ 32,767
字节型 8 –128~127
⑹ Java位运算符中129和128的位怎么确定
二进制只有0和1 满1就进 和十进制一样的 满9就进 不是1是哪个位0是哪个位 没有这种说法
⑺ 如何用java实现128位密钥的RSA算法
final int KEY_SIZE = 128;// 没什么好说的了,这个值关系到块加密的大小,可以更改,但是不要太大,否则效率会低
⑻ 关于java中类型转化运算 为什int型128转换成 byte型就成了-128了呢
这个涉及补码的知识。我先给你写出结论:正数的补码是本身的二进制表示,负数的补码=对应正数的二进制反码+1(反码即二进制的所以位取反),并规定首位为符号位不表示值,0为正1为负。
说了这么一堆,有啥用呢?有!整数在计算机中就是以补码的形式存储的。
OK基础有了我们来看看这个问题。int 类型的128,没有问题,int存储边界远比比128大。而转化成byte类型,问题就来了。我们先来看int类型的128的二进制表示:0000-0000-0000-0000-0000-0000-1000-0000也就是它的补码
转化成byte类型表示为:
1000-0000
我们会发现这里首位需要表示为值!但是遗憾计算机不会自动识别造型时的期望值。1000-0000在计算机中是一个补码而并非一串正数二进制。我们对它取反得到0111-1111发现正是最大的byte类型值127,再加一得128,而首位为1,表示为负,即1000-0000表示的就是-128就是最小的byte值。
这也就是byte类型值介于-128~127的原因。后面一个方法是一样的,不再赘述。
当然补码的知识不止于此,有兴趣可以在网上寻找有关资料。
⑼ 如何用java实现128位密钥的RSA算法
importjavax.crypto.Cipher;
importsun.misc.BASE64Decoder;
importsun.misc.BASE64Encoder;
importjava.io.FileInputStream;
importjava.io.FileOutputStream;
importjava.io.ObjectInputStream;
importjava.io.ObjectOutputStream;
importjava.security.Key;
importjava.security.KeyPair;
importjava.security.KeyPairGenerator;
importjava.security.SecureRandom;
publicclassRSA_Encrypt{
/**指定加密算法为DESede*/
privatestaticStringALGORITHM="RSA";
/**指定key的大小*/
privatestaticintKEYSIZE=128;
/**指定公钥存放文件*/
privatestaticStringPUBLIC_KEY_FILE="PublicKey";
/**指定私钥存放文件*/
privatestaticStringPRIVATE_KEY_FILE="PrivateKey";
//privatestaticStringPUBLIC_KEY_FILE="D://PublicKey.a";
//privatestaticStringPRIVATE_KEY_FILE="D://PrivateKey.a";
/**
*生成密钥对
*/
()throwsException{
/**RSA算法要求有一个可信任的随机数源*/
SecureRandomsr=newSecureRandom();
/**为RSA算法创建一个KeyPairGenerator对象*/
KeyPairGeneratorkpg=KeyPairGenerator.getInstance(ALGORITHM);
/**利用上面的随机数据源初始化这个KeyPairGenerator对象*/
kpg.initialize(KEYSIZE,sr);
/**生成密匙对*/
KeyPairkp=kpg.generateKeyPair();
/**得到公钥*/
KeypublicKey=kp.getPublic();
/**得到私钥*/
KeyprivateKey=kp.getPrivate();
/**用对象流将生成的密钥写入文件*/
ObjectOutputStreamoos1=newObjectOutputStream(newFileOutputStream(PUBLIC_KEY_FILE));
ObjectOutputStreamoos2=newObjectOutputStream(newFileOutputStream(PRIVATE_KEY_FILE));
oos1.writeObject(publicKey);
oos2.writeObject(privateKey);
/**清空缓存,关闭文件输出流*/
oos1.close();
oos2.close();
}
/**
*加密方法
*source:源数据
*/
publicstaticStringencrypt(Stringsource)throwsException{
generateKeyPair();
/**将文件中的公钥对象读出*/
ObjectInputStreamois=newObjectInputStream(newFileInputStream(PUBLIC_KEY_FILE));
Keykey=(Key)ois.readObject();
ois.close();
/**得到Cipher对象来实现对源数据的RSA加密*/
Ciphercipher=Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE,key);
byte[]b=source.getBytes();
/**执行加密操作*/
byte[]b1=cipher.doFinal(b);
BASE64Encoderencoder=newBASE64Encoder();
returnencoder.encode(b1);
}
/**
*解密算法
*cryptograph:密文
*/
publicstaticStringdecrypt(Stringcryptograph)throwsException{
/**将文件中的私钥对象读出*/
ObjectInputStreamois=newObjectInputStream(newFileInputStream(PRIVATE_KEY_FILE));
Keykey=(Key)ois.readObject();
/**得到Cipher对象对已用公钥加密的数据进行RSA解密*/
Ciphercipher=Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE,key);
BASE64Decoderdecoder=newBASE64Decoder();
byte[]b1=decoder.decodeBuffer(cryptograph);
/**执行解密操作*/
byte[]b=cipher.doFinal(b1);
returnnewString(b);
}
publicstaticvoidmain(String[]args){
try{
Stringsource="HelloWorld!";//要加密的字符串
Stringcryptograph=encrypt(source);
System.out.println(cryptograph);
Stringtarget=decrypt(cryptograph);//解密密文
System.out.println(target);
}catch(Exceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}//生成的密文
}
}
⑽ 怎样在JAVA中用位运算(128位)来实现权限的管理
用并运算试试,
用这个128位的数字递归并上2( ? & 2)判断结果就OK了