Java中用反码表示整数,及int到byte的转换

Java中的整数都是通过补码表示的,当整数为正数时,补码和原码相同,当整数为负数时,补码为原码按位取反(符号位除外),然后加1.

通过一些例子可以比较明显的看出:

int a = -1;
System.out.println(Integer.toBinaryString(a));//output: 11111111111111111111111111111111
int a = -128;
System.out.println(Integer.toBinaryString(a));//output: 11111111111111111111111110000000

在将int通过(byte)方式转换为byte类型时,截取最后一个字节。

所以byte的值由int最后一个字节决定,最后一个字节的第一位变为符号位,所以byte的值在127和-128之间。

int a = 128122;
System.out.println(Integer.toBinaryString(a));
byte b = (byte) a;
System.out.println(b);
//output:
11111010001111010
122
int a = 127;
System.out.println(Integer.toBinaryString(a));
byte b = (byte) a;
System.out.println(b);
//output:
1111111
127
int a = 128;
System.out.println(Integer.toBinaryString(a));
byte b = (byte) a;
System.out.println(b);
//output:
10000000
-128
时间: 2024-10-12 19:37:17

Java中用反码表示整数,及int到byte的转换的相关文章

java笔记--关于int和byte[]的转换

关于int和byte[]数组的转换 --如果朋友您想转载本文章请注明转载地址"http://www.cnblogs.com/XHJT/p/3891747.html "谢谢-- 众所周知java有8种基本类型,分别是低级变量(byte,char,boolean,shot)和高级变量(int,long,double,float),低级变量会自动转化成高级变量,而高级变量则要用强制转换才能成为低级变量,可是在文件传输和网络传输当中,由于计算机都是以二进制来存储数据的,所以很多时候我们需要将要

java整型数与网络字节序的 byte[] 数组转换关系

java整型数与网络字节序的 byte[] 数组转换关系 工作项目需要在java和c/c++之间进行socket通信,socket通信是以字节流或者字节包进行的,socket发送方须将数据转换为字节流或者字节包,而接收方则将字节流和字节包再转换回相应的数据类型.如果发送方和接收方都是同种语言,则一般只涉及到字节序的调整.而对于java和c/c++的通信,则情况就要复杂一些,主要是因为java中没有unsigned类型,并且java和c在某些数据类型上的长度不一致. 本文就是针对这种情况,整理了j

JAVA 与 C# 通讯中的int 之byte[]

在JAVA与C#通讯时由于两种不通的语言INT类型不样,比如在做Soket时做数据包头确认数据长度需要一个固定的字节数中存放一个INT类型的数据发送时会读不到相同的数据. 在JAVA中 把 INT转为 byte[] 1 /** 2 * 把int32类型的数据转存到4个字节的byte数组中 3 * @param i : int32类型的数据 4 * @return 返回 4个字节大小的byte数组 5 */ 6 public static byte[] ConvertIntToByteArray(

TCP通信实现对接硬件发送与接收十六进制数据 & int与byte的转换原理 & java中正负数的表示

今天收到的一份需求任务是对接硬件,TCP通信,并给出通信端口与数据包格式,如下: 1.首先编写了一个简单的十六进制转byte[]数组与byte[]转换16进制字符串的两个方法,如下: /** * 将十六进制的字符串转换成字节数组 * * @param hexString * @return */ public static byte[] hexStrToByteArrs(String hexString) { if (StringUtils.isEmpty(hexString)) { retur

java与C在整数累加的运算对比

java与C在整数累加的运算对比 先来没事,今天晚上突发奇想,在同样平台ubuntu14.04,同等运算负荷的情况下测试了一下C与java的性能.可是,最后的实验结果让我大吃一惊,在我的心里也慢慢再一次对詹姆斯.高斯林(java语言的作者)的敬意.实验本身很简单,各位看官也可以去做同样的实验.有了心得之后,不妨一起本着学习的心态,共同交流,共同成长.下面贴出测试代码: C语言: <span style="font-size:18px;"><strong> int

Java中int和String互相转换的多种方法

1 如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A. 有叁种方法: 1.) St

java.util.Random 类的 nextInt(int num )

随机产生3个67~295的整数并找出数值居中的数 并输出中间的数例如:100,225和200,输出200 要随机产生某个范围内的整数,用 java.util.Random 类的 nextInt(int num) 最简洁. nextInt( int num) 能接受一个整数作为它所产生的随机整数的上限,下限为零,比如:nextInt(4)将产生0,1,2,3这4个数字中的任何一个数字,注意这里不是0-4,而是0-3..但下限总是零,不能更改,所以若要达到非零下限的效果,必须把上限减去下限的结果传给

java中int与byte数组互转代码详细分析

转载请注明出处:http://blog.csdn.net/tang9140/article/details/43404385 在java中,可能会遇到将int转成byte[]数组,或者将byte[]数组转成int的情况.下面我们来思考下怎么实现? 首先,分析int在java内存中的存储格式. 众所周知,int类型在内存中占4个字节,采用补码方式存储(假如对原码.反码.补码不熟悉,请查阅相关资料).举例: 整型-128对应内存中的二进制值为 整型128对应内存中的二进制值为 然后,考虑如何把int

java中用jsoup抓取网页源码,并批量下载图片

一.导入jsoup的核心jar包jsoup-xxx.jar jar包下载地址:jsoup-1.8.2.jar 中文API地址:http://www.open-open.com/jsoup/parsing-a-document.htm 二.java中用jsoup抓取网页源码,并批量下载图片 package com.dgh.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; i