byte 订阅
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符 [1]  。一个位节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 [1]  。 展开全文
字节(Byte )是计算机信息技术用于计量存储容量的一种计量单位,也表示一些计算机编程语言中的数据类型和语言字符 [1]  。一个位节存储8位无符号数,储存的数值范围为0-255。如同字元一样,字节型态的变数只需要用一个位元组(8位元)的内存空间储存 [1]  。
信息
外文名
Byte
定    义
相当于一个字符,8位=1字节
类    型
数字信息的单位
中文名
字节
学    科
计算机
简    写
B
字节简介
字节是二进制数据的单位。一个字节通常8位长。但是,一些老型号计算机结构使用不同的长度。为了避免混乱,在大多数国际文献中,使用词代替byte。在多数的计算机系统中,一个字节是一个8位长的数据单位,大多数的计算机用一个字节表示一个字符、数字或其他字符。一个字节也可以表示一系列二进制位。在一些计算机系统中,4 个字节代表一个字,这是计算机在执行指令时能够有效处理数据的单位。一些语言描述需要2个字节表示一个字符,这叫做双字节字符集。一些处理器能够处理双字节或单字节指令。字节通常简写为“B”,而位通常简写为小写“b”,计算机存储器的大小通常用字节来表示 [2]  。
收起全文
精华内容
参与话题
问答
  • char与byte的区别

    万次阅读 多人点赞 2012-07-21 16:18:02
    很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:  byte 是字节数据类型...

    很多初学者(包括我,已经学了一年多java了)肯会对char和byte这两种数据类型有所疑惑,相互混淆,今天特地查了好多资料,对byte和char两种数据类型进行了总结和比较,先将结果与大家分享:


            byte 是字节数据类型 ,是有符号型的,占1 个字节;大小范围为-128—127 。char 是字符数据类型 ,是无符号型的,占2字节(Unicode码 );大小范围 是065535 ;char是一个16位二进制的Unicode字符,JAVAchar来表示一个字符 。


            下面用实例来比较一下二者的区别:

    1、Char是无符号型的,可以表示一个整数,不能表示负数;而byte是有符号型的,可以表示-128—127 的数;如:

    char c = (char) -3; // char不能识别负数,必须强制转换否则报错,即使强制转换之后,也无法识别
    System.out.println(c);
    byte d1 = 1;
    byte d2 = -1;
    byte d3 = 127; // 如果是byte d3 = 128;会报错
    byte d4 = -128; // 如果是byte d4 = -129;会报错
    System.out.println(d1);
    System.out.println(d2);
    System.out.println(d3);
    System.out.println(d4);

    结果为:

    ?
    1
    -1
    127
    -128


    2、char可以表中文字符,byte不可以,如:

    char e1 = '中', e2 = '国';
    byte f= (byte) '中';	//必须强制转换否则报错
    System.out.println(e1);
    System.out.println(e2);
    System.out.println(f);

    结果为:



    45


    3、char、byteint对于英文字符,可以相互转化,如:

    byte g = 'b';	//b对应ASCII是98
    char h = (char) g;
    char i = 85;	//U对应ASCII是85
    int j = 'h';	//h对应ASCII是104
    System.out.println(g);
    System.out.println(h);
    System.out.println(i);
    System.out.println(j);
    结果为:
    98
    b
    U
    104



    欢迎加入"Java梦之队" 学习群:226159645




    关注【SunLogging】 
    这里写图片描述 
    长按或扫码二维码,在手机端阅读更多内容


    展开全文
  • byte

    2018-04-04 00:13:21
    (BYTE *)0 表示把整数0强制转换为BYTE型数值的地址Java的二进制采用补码形式,byte范围是[-128, 127],而Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位...

    0本来表示一个整数。在C语言中,内存地址也是用整数int表示(32bit)。因此,
    (BYTE *)0 表示把整数0强制转换为BYTE型数值的地址

    Java的二进制采用补码形式,byte范围是[-128, 127],而Integer.toHexString的参数是int,如果不进行&0xff,那么当一个byte会转换成int时,对于负数,会做位扩展,

    举例来说,一个byte类型的-1(即0xff),会被转换成int 类型的-1(即0xffffffff),那么转化出的结果就不是我们想要的了。

    -1 hex  : 0xffffffff
    -1&0xff : 0xff
    
    -1 bin  : 11111111111111111111111111111111
    -1&0xff bin: 11111111
    
    127 bin    : 1111111
    -128 bin   : 11111111111111111111111110000000

     

    三。将十六进制字符串存为字节数组,可以节省存储空间

    0499AFA3432E9F2EBD81C134C1F5E4B3(MD5串)

    如果把这个MD5串直接存为字符串,就是32个字节(byte),就是256二进制位。

    如果把MD5串的每个字符用16进制字符来表示,那么用二进制位就会表示成4个二进制位,总共是128位,也就是16个字节。那么节省了一半的存储空间。

     

    四。在定义int类型的变量时,使用十六进制表示有什么好处?

    int a = 0b11000011001111001100011100101000

    还是这样好?

    1100 0011 0011 1100 1100 0111 0010 1000
    int a = 0xC33CC728


     机器可以只有加法而没有减法, 这样计算机运算的设计就更简单了.

    1-1 = 1 + (-1) = 0 

    于是人们开始探索将符号位参与运算, 并且只保留加法的方法. 首先来看原码:

    一、原码

    计算十进制的表达式: 1-1=0

    1 - 1 = 1 + (-1) = [00000001] + [10000001] = [10000010] = -2

    如果用原码表示, 让符号位也参与计算, 显然对于减法来说, 结果是不正确的.这也就是为何计算机内部不使用原码表示一个数.

     

    二、反码

    为了解决原码做减法的问题, 出现了反码:

    正数的反码是其本身

    负数的反码是在其原码的基础上, 符号位不变,其余各个位取反.

    计算十进制的表达式: 1-1=0

    1 - 1 = 1 + (-1) = [0000 0001] + [1000 0001]= [0000 0001] + [1111 1110] = [1111 1111] = [1000 0000] = -0

    发现用反码计算减法, 结果的真值部分是正确的. 而唯一的问题其实就出现在"0"这个特殊的数值上. 虽然人们理解上+0和-0是一样的,

    但是0带符号是没有任何意义的. 而且会有[0000 0000]和[1000 0000]两个编码表示0.

     

    三、补码

    正数的补码就是其本身

    负数的补码是在其原码的基础上, 符号位不变, 其余各位取反, 最后+1. (即在反码的基础上+1)

    于是补码的出现, 解决了0的符号以及两个编码的问题:

    1-1 = 1 + (-1) = [0000 0001] + [1000 0001] = [0000 0001] + [1111 1111] = [0000 0000]=[0000 0000]

    这样0用[0000 0000]表示, 而以前出现问题的-0则不存在了.  而且可以用[1000 0000]表示-128:

    (-1) + (-127) = [1000 0001] + [1111 1111] = [1111 1111] + [1000 0001] = [1000 0000]

    -1-127 = -128,  就是[1000 0000]  但是注意因为实际上是使用以前的-0的补码来表示-128,

    所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000], 这是不正确的)

    使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数。

    这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

     

     四、同余

    7 ≡ 7 (mod 12)

    (-2) ≡ 10 (mod 12)

    7 -2 ≡ 7 + 10 (mod 12)

    所谓十六进制String,就是字符串里面的字符都是十六进制形式,因为一个byte是八位,可以用两个十六进制位来表示,因此,byte数组中的每个元素可以转换为两个十六进制形式的char,所以最终的HexString的长度是byte数组长度的两倍.

    Byte(字节型)10 - 255


    Byte数据类型(字节型)用一个字节(Byte)储存,可区别256个数字,取值范围:0到255。 Byte是从0-255的无符号类型,所以不能表示负数。具体参照数据类型

    效果等同于 unsigned char型
    typedef unsigned char BYTE
    定义一种新类型BYTE,它其实就是unsigned char
    在VC++中,byte型数据的定义包含在windows.h头文件中,调用byte需要添加代码#include <windows.h>
    而在java中,byte是一个关键字
    表示声明了一个整形常量在内容中占用一个字节
    取值范围是-128~127


    字符串
    内存中,如果“字符”是以ANSI编码形式存在的,一个字符可能使用一个字节或多个字节来表示,那么我们称这种字符串为ANSI字符串或者多字节字符串。如,"中文123" (占8字节,包括一个隐藏的\0)。
    字符集
    对于ANSI编码方式,存在不同的字符集(Charset)。同样的字节序列,在不同的字符集下表示的字符不一样。要正确解析一个ANSI字符串,还要选择正确的字符集,否则就可能导致所谓的乱码现象。不同语言版本的操作系统,都有一个默认的字符集。在不指定字符集的情况下,系统会使用此字符集来解析ANSI字符串。也就是说,如果我们在简体中文版的Windows下打开了一个由日文操作系统保存的ANSI文本文件(仅包含ANSI字符串的文本文件),我们看到的将是乱码。但是,如果我们使用Visual Studio之类的带编码选择的文本编辑器打开此文件,并且选择正确的字符集,我们将可以看到它的原貌。注意:简体中文字符集中的繁体字和繁体中文字符集中的繁体字,编码不一定相同(事实证明,似乎是完全不同)。
    每个字符集都有一个唯一的编号,称为代码页(Code Page)。简体中文(GB2312)的代码页为936,而系统默认字符集的代码页为0,它表示根据系统的语言设置来选择一个合适的字符集。
    Unicode
    字符串在内存中,如果“字符”是以在Unicode中的序号存在的,那么我们称这种字符串为Unicode字符串或者宽字节字符串。在Unicode中,每个字符都占两个字节。如,"中文123"(占10字节)。
    Unicode和ANSI的区别就相当于输入法内的“全角”和“半角”的区别。
    由于不同ANSI编码所规定的标准是不相同的(字符集不同),因此,对于一个给定的多字节字符串,我们必须知道它采用的是哪一种字符集则,才能够知道它包含了哪些“字符”。而对于Unicode字符串来说,不管在什么环境下,它所代表的“字符”内容总是不变的。Unicode 有着统一的标准,它定义了世界上绝大多数的字符的编码,使得拉丁文、数字、简体中文、繁体中文、日文等都能以同一种编码方式保存。



    展开全文
  • 字节、字、bit、byte的关系

    万次阅读 多人点赞 2011-12-28 10:02:53
    字节 byte 位 bit,来自英文bit,音译为“比特”,表示二进制位。 字长是指字的长度 1字=2字节(1 word = 2 byte) 1字节=8位(1 byte = 8bit) 一个字的字长为16 一个字节的字长是8 bps 是 bits per second 的简称。...

    字 word
    字节 byte
    位 bit,来自英文bit,音译为“比特”,表示二进制位。
    字长是指字的长度

    1字=2字节(1 word = 2 byte)
    1字节=8位(1 byte = 8bit)
     
    一个字的字长为16
    一个字节的字长是8

    bps 是 bits per second 的简称。一般数据机及网络通讯的传输速率都是以「bps」为单位。如56Kbps、100.0Mbps 等等。
    Bps即是Byte per second 的简称。而电脑一般都以Bps 显示速度,如1Mbps 大约等同 128 KBps。
    bit 电脑记忆体中最小的单位,在二进位电脑系统中,每一bit 可以代表0 或 1 的数位讯号。
    Byte一个Byte由8 bits 所组成,可代表一个字元(A~Z)、数字(0~9)、或符号(,.?!%&+-*/),是记忆体储存资料的基本单位,至於每个中文字则须要两Bytes。当记忆体容量过大时,位元组这个单位就不够用,因此就有千位元组的单位KB出现,以下乃个记忆体计算单位之间的相关性:

    1 Byte = 8 Bits

    1 KB = 1024 Bytes

    1 MB = 1024 KB

    1 GB = 1024 MB

    usb2.0标准接口传输速率。许多人都将“480mbps”误解为480兆/秒。其实,这是错误的,事实上“480mbps”应为“480兆比特/秒”或“480兆位/秒”,它等于“60兆字节/秒”,大家看到差距了吧。

    这要从bit和byte说起:bit和byte同译为"比特",都是数据量度单位,bit=“比特”或“位”。
    byte=字节即1byte=8bits,两者换算是1:8的关系。
    mbps=mega bits per second(兆位/秒)是速率单位,所以正确的说法应该是说usb2.0的传输速度是480兆位/秒,即480mbps。
    mb=mega bytes(兆比、兆字节)是量单位,1mb/s(兆字节/秒)=8mbps(兆位/秒)。

    我们所说的硬盘容量是40gb、80gb、100gb,这里的b指是的byte也就是“字节”。
    1 kb = 1024 bytes =2^10 bytes
    1 mb = 1024 kb = 2^20 bytes
    1 gb = 1024 mb = 2^30 bytes

    比如以前所谓的56kb的modem换算过来56kbps除以8也就是7kbyte,所以真正从网上下载文件存在硬盘上的速度也就是每秒7kbyte。
    也就是说与传输速度有关的b一般指的是bit。
    与容量有关的b一般指的是byte。

    最后再说一点: usb2.0 480mbps=60mb/s的传输速率还只是理论值,它还要受到系统环境的制约(cpu、硬盘和内存等),其实际读、取写入硬盘的速度约在11~16mb/s。但这也比usb1.1的12mbps(1.5m/s)快了近10倍。

    扩展阅读

    字节的来由

    最开始计算机只是处理数据运算,也就是0-9,加上运算符号,4bit足够了。举个例子(实际不是这样):用0000表示0,0001表示1,0010表示2,依次类推。 
    后来加入了字母,程序符号等,8bit也足够了,而这时诞生了ASCII编码的标准,大家就说把8bit表示出来的值叫做字节(byte)吧,于是就有了字节这个单位。 
    所以1byte等于8bit是计算机发展中的一个约定出来的规则。

    汉字:

    1 汉字 = 2 byte = 16 bit (这里不是很准确,当编码不同的时候,1个汉字所占的字节数也会有所不同,有些编码是占 2个字节,有些则不是,可能是 3个或者 4个)

    Java的八大基本数据类型

            字节 内存 取值范围
    数据类型

    基本数据类型

    内置类型

     

    整数类型 byte(字节型) 1 8位

    -128~127

    (-2^7 ~2^7 -1) 

    short(短整型) 2 16位

    -32768~32767

    (-2^15~2^15-1)

    int(整型) 4 32位

    -2147483648~2147483647

    (-2^31~2^31-1)

    long(长整型) 8 64位

    -9223372036854774808~9223372036854774807

    (-2^63~2^63-1)

    浮点类型 float(单精度型) 4    
    double(双精度类型) 8    

    字符类型

     

    char 1    
    布尔类型 boolean 1    
      引用类型          

     

    展开全文
  • 什么是字节(Byte

    万次阅读 多人点赞 2018-11-28 17:56:08
    字节(Byte)是存储数据的基本单位,并且是硬件所能访问的最小单位。前面说过,CPU 只能直接处理内存数据,不能直接处理硬盘数据。硬盘数据必须先调入内存条中才可以运行。内存中存储数据的最小单位是“位(Bit)”...

    原文出处:http://c.biancheng.net/view/140.html

    字节(Byte)是存储数据的基本单位,并且是硬件所能访问的最小单位。前面说过,CPU 只能直接处理内存数据,不能直接处理硬盘数据。硬盘数据必须先调入内存条中才可以运行。内存中存储数据的最小单位是“位(Bit)”。字节是存储数据的基本单位,位是存储数据的最小单位,不要混淆了。

    内存里面存放的全是二进制代码。内存里面有很多“小格子”,每个“格子”中只能存放一个 0 或 1。一个“小格子”就是一位,所以“位”要么是 0,要么是 1,不可能有比位更小的单位。那么字节和位是什么关系呢?8 个“小格子”就是一字节,即一字节等于 8 位。

    那么为什么硬件所能访问的最小单位是字节,而不是位呢?因为硬件是通过地址总线访问内存的,而地址是以字节为单位进行分配的,所以地址总线只能精确到字节。那如何控制到它的某一位呢?这个只能通过“位运算符”,即通过软件的方式来控制。

    字节换算

    常见的存储单位主要有bit(位)、B(字节)、KB(千字节)、MB(兆字节)、GB(千兆字节)。它们之间主要有如下换算关系:

    1B=8bit
    1KB=1024B
    1MB=1024KB
    1GB=1024MB

    其中 B 是 Byte 的缩写。

    比如计算机的内存是 4GB,那么它能存放多少个 0 或 1(即能存放多少位)呢?4×1024×1024×1024×8 位。因为一个 1024 就是 210,所以结果就相当于 32 个 230 这么多!这就是 4GB 内存条所能存储的数据。

    硬盘也一样,比如计算机的硬盘是 500GB,那么它能存储的数据为 500×1024×1024×1024×8 位,也就是能存放 4000 个 230 这么多的 0 或 1。

    最后讲一个小常识。比如你买了一个 500GB 的硬盘,但是真正显示出来的肯定没有 500GB。那么这是为什么呢?因为计量单位不一样!在买硬盘或 U 盘的时候,卖家所说的,包括包装盒上写的都是以 1000 为单位的,而计算机是以 1024 为单位的。

    展开全文
  • Bytebyte区别详解

    万次阅读 2019-02-24 10:29:23
    写程序时,误把byte写作Byte,调试了许久,便将二者的区别及用法详细理解一遍 1:byteByte详解 byte是java的基本数据类型,存储整型数据,占据1个字节(8 bits),能够存储的数据范围是-128~+127。 Byte是java....
  • java Byte 方法详解

    千次阅读 2019-08-27 11:51:32
    直接来码 ... public class ByteDamo { static void m1() { //byte 的构造函数 Byte bb=new Byte((byte) 333); System.out.println(bb); Byte jByte=new Byte("33"); System.out.println(jByte)...
  • byte[]...

    千次阅读 2018-05-17 12:44:28
    byte[]...
  • byte[]读取与写入

    万次阅读 2018-09-18 14:32:13
    FileStream fs1 = new FileStream(@"E:\tenp\doc\111.txt", FileMode.Open, FileAccess.Read, FileShare.Read); FileStream fs2 = new FileStream(@"E:\temp\doc\222.txt", FileMode.Create, ...
  • c# byte[] 操作

    千次阅读 2019-03-26 16:17:09
    byte[]数组截取: byte[] data= new byte[]{1,2,3,4,5,6,7,8,9}; 截取2位:BitConverter.ToInt16(data,3);//3表示从第三个位置开始 截取4位:BitConverter.ToInt32(data,3); 截取8位:BitConverter.ToInt64...
  • java byte[] 学习总结

    万次阅读 2018-11-07 16:40:53
    byte表是字符,一个字节,8位,可以组成2^8=256中不同数字。byte存值范围: -128 - 127;  -128 -&gt; -1 在十六进制表示范围: 0x80 -&gt; 0xff ,在二进制表示范围:10000000 -&gt; 11...
  • 字节(byte)简介

    千次阅读 2019-06-27 21:58:55
    在 x86 计算机中,所有数据存储的基本单位都是字节(byte),一个字节有 8 位。其他的存储单位还有字(word)(2 个字节),双字(doubleword)(4 个字节)和四字(quadword)(8 个字节)。 下图展示了每个存储...
  • Byte[]和byte[]的转换

    万次阅读 2017-10-26 11:29:33
    byte[] toPrimitives(Byte[] oBytes) { byte[] bytes = new byte[oBytes.length]; for(int i = 0; i ; i++) { bytes[i] = oBytes[i]; } return bytes; }// byte[] to Byte[] By
  • using System; using System.IO; using System.Linq; using System.Runtime.Serialization; using System.Runtime.Serialization.Formatters.Binary; using System.Text; namespace Core.Util ... public st
  • ‘utf-8’ codec can’t decode byte 0xff in position 0: invalid start byte觉得有用的话,欢迎一起讨论相互学习~Follow Me今天使用语句image_raw_data_jpg = tf.gfile.FastGFile('../test_images/test_1.jpg', 'r'...
  • 一、装逼前先热热身 无论是比较传统的 web项目 还是近几年流行的前后端分离,后端只独立提供数据交互接口服务的项目,都避免不了数据之间交互格式的选择。 从很早之前的 xml 格式 到现在最火热的json格式 ...
  • 0x00 问题引出: 最近在做一个买房自动化分析Python脚本,需要爬取网页。 在使用urllib获取reqest的response的时候,还要进行编码转换。...UnicodeDecodeError: 'utf-8' codec can't decode byte 0x
  • BYTE,BYTE[] 问题

    千次阅读 2007-03-07 14:27:00
    一个处理BYTE和其他类型转换的类:public class Tools{ //16进制 private static String HexCode[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" }; private To
  • 0x00 问题引出: 最近在做一个买房自动化分析Python脚本,需要爬取网页。 在使用urllib获取reqest的response的时候,还要进行解码。...UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe5 in position...
  • java中的byte运算

    万次阅读 2016-07-27 15:01:31
    java中会用到byte来表示协议中的各个值,注释的比较详细
  • 在使用Python 3.5版本编码的过程中,直接open(filename,’r’),总是报错:Python UnicodeDecodeError: ‘gbk’ codec can’t decode byte 0xe9但是在用Python2.7版本的时候却什么错误都没有 解决方案: 在头文件中...

空空如也

1 2 3 4 5 ... 20
收藏数 1,260,027
精华内容 504,010
关键字:

byte