小编Cob*_*alt的帖子

比特如何存储在内存中?(在块中?可以存储多个大小的位吗?)

我曾经认为每个内存位置包含8位,16位,32位或64位.因此0101将作为00000101存储在8位机器中(如果是负数则符号扩展).这是好的和花花公子,直到我出于好奇心在java中编写一个程序,以找出这个系统的更多内部工作.

有问题的方法如下:

public void printBinaryRep(File f){
        try{
            FileInputStream inputStream = new FileInputStream(f);
            int next = 0;
            byte b = 0;
            while((next = inputStream.read()) != -1){
                b = (byte)next;
                System.out.println((char)next + " : "+Integer.toBinaryString(next));
            }
            inputStream.close();
        }
        catch(Exception e){System.out.println(e);}
 }
Run Code Online (Sandbox Code Playgroud)

我从一个写着Hello World的文件中得到了这个输出

H : 1001000
e : 1100101
l : 1101100
l : 1101100
o : 1101111
  : 100000
W : 1010111
o : 1101111
r : 1110010
l : 1101100
d : 1100100
Run Code Online (Sandbox Code Playgroud)

除了空间外,所有这些都很好看.它有6位而不是8位.我现在想知道所有这些信息是如何存储在内存中的.如果所有这些都存储在8位块中,比如

您好:10010001100101110110011011001101111

然后你可以简单地查看每个8位块并找出它代表的数字(然后是它所指的ASCII码).当一个不同大小的字符(如6位空格和4位/ n)与它们一起存储时,它是如何工作的?那么不会在大的位空间中存储少量的数据会浪费很多比特吗?

我认为我有一些基本的理解错误(或者某个地方的程序错了......).对不起,如果这个问题听起来很奇怪或太不必要.我只是想知道.我做了一些谷歌搜索,但它没有提出任何相关的东西.如果你能让我知道我哪里出错了或者指出了我正确的方向,我会非常感激.谢谢!

java memory binary computer-architecture bit

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

binary ×1

bit ×1

computer-architecture ×1

java ×1

memory ×1