精华内容
下载资源
问答
  • 1 字节 = 8 二进制位 这个毋庸置疑,在每种情况下都是成立的。(字节就是所谓的 ‘KB’ 中的那个 ‘B’) 1 字符 = ?字节 “字符” 字节” 对应的关系就没那么简单了,这取决于程序使用了什么样的 “编码...

    之前一直对这个问题一知半解,导致最近的学习中很多问题处理的模棱两可,于是终于忍无可忍,决定把这个问题系统的处理一遍。 ψ(*`ー´)ψ

    1 字节 = 8 二进制位

    这个毋庸置疑,在每种情况下都是成立的。(字节就是所谓的 ‘KB’ 中的那个 ‘B’)

    1 字符 = ?字节

    “字符” 和 “字节” 对应的关系就没那么简单了,这取决于程序使用了什么样的 “编码方式”。
    用我们最熟悉的记事本做实验,先建一个空的 “ANSI” 编码格式的 .txt 文件:
    在这里插入图片描述可以发现,它的原本大小为 0 字节
    在这里插入图片描述分别填写一个英文和一个中文,观察:
    在这里插入图片描述在这里插入图片描述得出结论:ANSI 编码方式,英文(包含英文特殊符号) = 1字节 、 中文(包含中文特殊符号) = 2字节

    同理,实验 unicode 编码方式:
    在这里插入图片描述你会发现空的 .txt 文件在 unicode 编码方式下竟然有 2 字节的大小 !(这里不解释了就,否则就跑题了)
    在这里插入图片描述继续在 unicode 编码的 .txt 文件中测试英文和中文:
    在这里插入图片描述
    在这里插入图片描述结论是 unicode 编码下,英文和中文都占 2 个字节。

    同理实验 utf-8 ,初始大小 3 字节,英文占 1 字节,中文占 3 字节(这里就不截图了)

    总结一下:

    编码英文中文
    ANSI(ASCII 的扩展)1字节2字节
    UTF-81字节3字节
    Unicode2字节2字节
    GBK1字节2字节

    网上的老哥们说字符对应的字节数和机器长度也有关系,这里先贴出来,有大神知道的话希望帮我解释解释。
    在这里插入图片描述

    展开全文
  • 字节二进制表示

    万次阅读 2021-02-03 14:34:00
    每个bit非0即1,即二进制表达中的0或1,0001中每个“0”“1”即为。 JAVA常见基本类型: byte 1字节 short 2字节 int 4字节 long 8字节 char 2字节(C语言中是1字节)可以存储一个汉字 float 4字节 double 8...

    前言

    仅针对JAVA,总结几个知识点。

    字节与位

    1字节(byte)= 8位(bit)

    每个bit位非0即1,即二进制表达中的0或1,0001中每个“0”和“1”即为位。

    JAVA常见基本类型:
    byte 1字节
    short 2字节
    int 4字节
    long 8字节
    char 2字节(C语言中是1字节)可以存储一个汉字
    float 4字节
    double 8字节

    其中以int为例,int类型存储的最大的数不是232,而是-231~(231-1),因为正数最高位为0充当符号位

    负数的二进制如何表示

    在二进制码中,采用最高位是符号位的方法来区分正负数,正数的符号位为0、负数的符号位为1。剩下的就是这个数的绝对值部分。通过将负数转为二进制原码,再求其原码的反码,最后求得的补码即负数的二进制表示结果。

    比如整数-1的二进制。先取1的原码:00000000 00000000 00000000 00000001,得反码: 11111111 11111111 11111111 11111110,最后得补码(反码+1): 11111111 11111111 11111111 11111111,即-1在计算机里用二进制表示结果。

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

    计算机中采用补码来进行运算

    以下参考文章

    在开始深入学习前, 我的学习建议是先"死记硬背"上面的原码, 反码和补码的表示方式以及计算方法.

    现在我们知道了计算机可以有三种编码方式表示一个数. 对于正数因为三种编码方式的结果都相同:

    [+1] = [00000001]原 = [00000001]反 = [00000001]补

    所以不需要过多解释. 但是对于负数:

    [-1] = [10000001]原 = [11111110]反 = [11111111]补

    可见原码, 反码和补码是完全不同的. 既然原码才是被人脑直接识别并用于计算表示方式, 为何还会有反码和补码呢?

    首先, 因为人脑可以知道第一位是符号位, 在计算的时候我们会根据符号位, 选择对真值区域的加减. (真值的概念在本文最开头). 但是对于计算机, 加减乘数已经是最基础的运算, 要设计的尽量简单. 计算机辨别"符号位"显然会让计算机的基础电路设计变得十分复杂! 于是人们想出了将符号位也参与运算的方法. 我们知道, 根据运算法则减去一个正数等于加上一个负数, 即: 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.

    于是补码的出现, 解决了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]补 就是-128. 但是注意因为实际上是使用以前的-0的补码来表示-128, 所以-128并没有原码和反码表示.(对-128的补码表示[1000 0000]补算出来的原码是[0000 0000]原, 这是不正确的)

    使用补码, 不仅仅修复了0的符号以及存在两个编码的问题, 而且还能够多表示一个最低数. 这就是为什么8位二进制, 使用原码或反码表示的范围为[-127, +127], 而使用补码表示的范围为[-128, 127].

    因为机器使用补码, 所以对于编程中常用到的32位int类型, 可以表示范围是: [-231, 231-1] 因为第一位表示的是符号位.而使用补码表示时又可以多保存一个最小值.

    带符号右移>>和无符号右移>>>

    带符号右移(>>)就是将那个数转为二进制然后右移,在前面补0或1
    如果是正数就补0
    负数补1
    无符号右移(>>>)就是不补
    带符号右移就是将那个数zhi转为dao2进制然后在前面补0或1
    如果是正数就补0
    负数补1

    例如11 >> 2,则是将数字11右移2位 计算过程: 11的二进制形式为:0000 0000 0000 0000 0000 0000
    0000 1011,然后把低位的最后两个数字移出,因为该数字是正数,所以在高位补零。则得到的最终结果是0000 0000 0000 0000
    0000 0000 0000 0010。转换为十进制是2。

    无符号右移与带符号右移的区别就是 无符号始终补0

    展开全文
  • 字节、十六进制、二进制

    一个字节是由两位16进制数组成。
    最常用的字节是八位的字节,即它包含八位的二进制数。十六进制一般用数字0到9和字母A到F(或a ~ f)表示,其中:A ~ F表示10~15,这些称作十六进制数字。十六进制数转换成二进制数:把每一个十六进制数转换成4位的二进制数,就得到一个二进制数。
    十六进制数字与二进制数字的对应关系如下:

    二进制十六进制二进制十六进制二进制十六进制二进制十六进制
    00000000110010200113
    01004010150110601117
    10008100191010A1011B
    1100C1101D1110E1111F

    因此,1个16进制数对应4个二进制数位,2个16进制数位对应8个二进制数位,及1个字节。

    在这里插入图片描述

    扩展资料:

    字节相关单位:

    • B与bit:
      数据存储是以“字节”(Byte)为单位,数据传输大多是以“位”(bit,又名“比特”)为单位,一个位就代表一个0或1(即二进制),每8个位(bit,简写为b)组成一个字节(Byte,简写为B),是最小一级的信息单位。

    • B与iB:

      • 1KiB(Kibibyte)=1024byte
      • 1KB(Kilobyte)=1000byte
      • 1MiB(Mebibyte)=1048576byte
      • 1MB(Megabyte)=1000000byte

    硬盘生产商是以GB(十进制,即10的3次方=1000,如1MB=1000KB)计算的,而电脑(操作系统)是以GiB(2进制,即2的10次方, 如1MiB=1024KiB)计算的,但是国内用户一般理解为1MiB=1M=1024 KB, 所以为了便于中文化的理解,翻译MiB为MB也是可以的。

    展开全文
  • 我自己画了一张图

    java面试题网站:www.javaoffers.com

    我自己画了一张图

    展开全文
  • Java字节二进制字节流、字符

    万次阅读 2019-06-22 00:16:39
    Java字节二进制字节流、字符
  • 因为计算机通信存储的时候都是以010101这样的二进制数据为基础的,这儿的一个01占的地方就叫bit(),即一个二进制位。 1Byte=8bit 1KB=1024B 1MB=1024KB(2的十次方) 2.二进制 二进制数有两个特点:它由两个基本...
  • 一、0x十六进制和0八进制 0x开头是16进制 英文:hexadecimal 简称HEX 0开头是8进制 英文: octal 简称OCT 八进制数是一种逢八进一的计数体制,基数是8,用0~7表示,如077。 八进制数以数字0开头。 十六进制数是一种...
  • 3.为什么一个字节是8位二进制,而不是其他数目?4.为什么引入八进制、十六进制?(1)二进制转换?(2)十六进制转换? 1.计算机为什么采用二进制? 因为二进制是在电路中最好控制的,只有10两种状态.代表接通...
  • 1.整型转换十六进制并进行高低字节排序 // 整型转换16进制并高字节在前、低字节在后 public static String decToHex(Integer dec) { StringBuilder hex = new StringBuilder(); while (dec != 0) { String h = ...
  • 进制字节的简介

    千次阅读 2019-04-09 19:55:01
    进制是一种符号系统,其中包括 二进制(0b10),八进制(010),十进制(10),十六进制(0x10)等。其中二进制只包括两个数字0,1 八进制是是从0-7的数字 十进制 就是0-9的数字,十六进制就是0-15的数字,其中十六进制...
  • 十进制与二进制的相互转化· (一). 字节(Byte)的概念相关换算· (二). 十进制与二进制的转化1.十进制——>二进制①. 整数 (除2取余)②.小数 (乘2取整)2.二进制——>十进制 (*按权相加*)①. 整数...
  • 二进制的位数,字节、字符

    万次阅读 2016-08-11 21:23:02
    二进制位数,也就是表达一个其他类型的数所需要的... 4的二进制为 100,占用3个二进制位再例如,int型是32,什么意思呢,也就是所它最大可以占32个2进制 也就是100000000000000000000000000000,它的最高在第3
  • 二进制和位运算

    千次阅读 2019-03-15 20:03:26
    所有编程语言都是一种人和计算机之间的翻译工具,人的数组语言翻译成二进制给计算机读取,然后把计算机的二进制数据翻译成人类的语言呈现出来。 16进制 16进制用于缩写(简写)2进制,将2进制从后向前 每4位数转换...
  • (bit)就是一个二进制位,即可表示01,而字节(Byte)是计算机更通用的计算单位,1字节等于8,可以代表256个数字(在编程中可以通过这些数字作为判断),int类型一般为4字节,即32。一个十六进制数,如0xf,...
  • (bit):1表示一个二进制数。 是计算机中存储数据的最小单位,其值为“0”或“1”。一个二进制数就是一(1bit) 字节(byte):1字节表示8个二进制数。字节是计算机存储容量的基本单位。在计算机内部,...
  • 计算机网络IPv4地址详解——二进制和十进制一、二进制和十进制关二、IPv4地址 一、二进制和十进制关 从上图(8)我们可以看出...那么我们根据上面所说的二进制和十进制关系来讲解这五类地址。 IPv4地址是由32
  • 1、一个字节 = 8(8个二进制位) 1Byte = 8bit; 2、一个十六进制 = 4个二进制位 3、一个字节 = 2个十六进制 1字节=8 Delphi中一个16进制为$f,一个16进制数为四个二进制数,$0为0000,0xf为1111,即1个16进制...
  • 字节码与二进制的“样貌”

    千次阅读 2020-01-15 08:10:00
    字节码是机器码的(二进制)一种抽象,你可以把它理解为一种到机器码的中间码。由字节码转换成机器码非常容易。我们看一段代码被转换成字节码的“面貌”(注: 只有函数被调用时才会生成字节码,下面的代码如果不...
  • 16进制八个二进制位关系

    千次阅读 2017-05-02 15:02:28
    英文名称:hexadecimal number system(HEX) 它由0-9,A-F组成,字母不区分大小写。...一个字节八个比特,就是八个二进制位四个二进制数最大表示为15,就是一个16进制数,所以八位可以表示成两个16进制的数!
  • python没有二进制类型,但可以存储二进制类型的数据,就是用string字符串类型来存储二进制数据,这也没关系,因为string是以1个字节为单位的。 import struct a=12.34 #将a变为二进制 bytes=struct.pack(‘i’,a) ...
  • 一个字节八个比特,就是八个二进制位 0000 0000 0x00-0xFF (十进制0-255) 四个二进制数最大表示为15,就是一个16进制数,所以八位可以表示成两个16进制的数!  转载于:...
  • * 16进制的每个字符需要用4位二进制位来表示,,0x0为0000,0xf为1111,即1个16进制数为4, * 如42 4D 38 04 04 00 00 00 00 00 36 04 00 00,每两个16进制数隔开,用意是:因为1个16进制数为4,两个就是8,即...
  • java二进制字节转换

    千次阅读 热门讨论 2018-07-24 14:33:35
    好久都没有写博客,最近一直我可能要疯狂的写博客了,上几周吸收了很多的知识,接触的都是01,睡觉都是01,急躁的内心,我都开始有点掉头发了 转型 最开始的时候对于转型问题真的是没有太多的理解,只是...
  • 如果有些文件,比如是媒体文件,因格式太多,...这些头部编码可以用UltraEdit或是winhex来能过二进制方式打开文件来查看 1、从Ultraedit查看的头部编码 JPEG (jpg),文件头:FFD8FF PNG (png),文件头:89504E...
  • 二进制、八进制、十进制、十六进制关系及转换

    万次阅读 多人点赞 2019-02-21 21:20:22
    二进制,八进制,十进制,十六进制之间的关系是什么?浮点数是什么回事? 本文内容参考自王达老师的《深入理解计算机网络》一书<中国水利水电出版社&amp...
  • 位和进制关系

    2021-04-15 14:50:58
    也就是说需要用32位二进制数来表示这个数字 那么现在两个字节长度为16的补码 下面的的意思是二进制位 4位二进制位能表示一个16进制数 1位二进制位能表示一个2进制数 现有如下题目 (单选)17、两个字长16的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 197,928
精华内容 79,171
关键字:

二进制位和字节的关系