标签: binary

如何计算32位整数中的设置位数?

代表数字7的8位看起来像这样:

00000111
Run Code Online (Sandbox Code Playgroud)

设置三位.

什么算法来确定32位整数中的设置位数?

algorithm binary bit-manipulation hammingweight iec10967

838
推荐指数
31
解决办法
52万
查看次数

'b'字符在字符串文字前面做了什么?

显然,以下是有效的语法

my_string = b'The string'
Run Code Online (Sandbox Code Playgroud)

我想知道:

  1. 这是什么b字在前面的字符串是什么意思?
  2. 使用它有什么影响?
  3. 使用它的适当情况是什么?

我在SO上找到了一个相关的问题,但是这个问题是关于PHP的,它表示b用于表示字符串是二进制的,而不是Unicode,这是代码与PHP版本兼容所需的代码<6 ,当迁移到PHP 6.我不认为这适用于Python.

我确实在Python网站上找到了关于使用相同语法的字符将字符串指定为Unicode的文档u.不幸的是,它没有提到该文档中任何地方的b字符.

而且,只是出于好奇,有没有比多符号bu是做其他事情?

python string unicode binary

724
推荐指数
10
解决办法
49万
查看次数

什么是应用程序二进制接口(ABI)?

我从未明白ABI是什么.请不要指向维基百科的文章.如果我能理解它,我就不会在这里张贴这么长的帖子.

这是我对不同界面的看法:

电视遥控器是用户和电视之间的接口.它是一个现有实体,但本身无用(不提供任何功能).遥控器上每个按钮的所有功能都在电视机中实现.

接口:它是间"现有实体"层 functionalityconsumer的该功能.接口本身不起作用.它只是调用后面的功能.

现在取决于用户是谁,有不同类型的接口.

命令行界面(CLI)命令是现有实体,消费者是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些目的.

existing entities: 命令

consumer: 用户

图形用户界面(GUI)窗口,按钮等是现有实体,消费者再次是用户和功能所在.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 窗口,按钮等..

consumer: 用户

应用程序编程接口(API)函数(或更正确的)接口(在基于接口的编程中)是现有实体,这里的消费者是另一个程序而不是用户,并且该层后面的功能也是如此.

functionality: 我的软件功能解决了我们描述这个界面的一些问题.

existing entities: 函数,接口(函数数组).

consumer: 另一个程序/应用程序

应用程序二进制接口(ABI)这是我的问题开始的地方.

functionality: ???

existing entities: ???

consumer: ???

  • 我用不同的语言编写了软件并提供了不同类型的接口(CLI,GUI和API),但我不确定我是否提供过任何ABI.

维基百科说:

ABI涵盖了诸如此类的详细信息

  • 数据类型,大小和对齐方式;
  • 调用约定,它控制函数参数的传递方式并返回检索的值;
  • 系统调用号码以及应用程序应如何向操作系统进行系统调用;

其他ABI标准化细节,如

  • C++名称错误,
  • 异常传播,和
  • 在同一平台上调用编译器之间的约定,但不需要跨平台兼容性.
  • 谁需要这些细节?请不要说操作系统.我知道汇编编程.我知道链接和加载是如何工作的.我确切地知道里面发生了什么.

  • 为什么C++名称输入?我以为我们正在谈二进制.语言为什么会进来?

无论如何,我已经下载了[PDF] System V Application Binary Interface Edition 4.1(1997-03-18),看看它究竟包含了什么.好吧,大部分都没有任何意义.

  • 为什么它包含两章(第4和第5章)来描述ELF文件格式?实际上,这些是该规范中仅有的两个重要章节.其余章节是"处理器特定的".无论如何,我认为这是一个完全不同的话题.请不要说ELF文件格式规范 ABI.根据定义,它不符合接口的条件.

  • 我知道,因为我们谈论的水平很低,所以必须非常具体.但我不确定它是如何"指令集架构(ISA)"具体的?

  • 我在哪里可以找到Microsoft Windows的ABI?

所以,这些是困扰我的主要问题.

compiler-construction api binary operating-system abi

444
推荐指数
11
解决办法
10万
查看次数

什么是"2的补充"?

我在计算机系统课程中,并且一直在与Two's Complement一起挣扎.我想了解它,但我读过的所有内容并没有为我提供图片.我已经阅读了维基百科文章和其他各种文章,包括我的教科书.

因此,我想开始这个社区wiki帖子来定义Two's Complement是什么,如何使用它以及它如何在诸如强制转换(从有符号到无符号,反之亦然)等操作中影响数字,逐位操作和位移操作.

我所希望的是一个清晰简洁的定义,程序员很容易理解.

binary computer-science bit-manipulation twos-complement data-representation

410
推荐指数
7
解决办法
40万
查看次数

读取二进制文件并循环遍历每个字节

在Python中,如何读取二进制文件并循环遍历该文件的每个字节?

python binary file-io

345
推荐指数
9
解决办法
75万
查看次数

你如何在Python中表达二进制文字?

如何用Python文字将整数表示为二进制数?

我很容易找到十六进制的答案:

>>> 0x12AF
4783
>>> 0x100
256
Run Code Online (Sandbox Code Playgroud)

和八进制:

>>> 01267
695
>>> 0100
64
Run Code Online (Sandbox Code Playgroud)

你如何使用文字在Python中表达二进制文件?


答案摘要

  • Python 2.5及更早版本:可以使用int('01010101111',2)文字来表示二进制文件,但不能用文字表达.
  • Python 2.5及更早版本:没有办法表达二进制文字.
  • Python 2.6 beta:您可以这样做:0b11001110B1100111.
  • Python 2.6 beta:也允许0o270O27(第二个字符是字母O)表示八进制.
  • Python 3.0 beta:与2.6相同,但不再允许027octals 的旧语法.

python syntax binary integer literals

336
推荐指数
3
解决办法
22万
查看次数

如何从bash查看二进制文件?

我想查看当前目录中文件的内容,但是从命令行以二进制形式查看.我怎样才能做到这一点?

binary bash shell

255
推荐指数
8
解决办法
38万
查看次数

为什么我们使用Base64?

维基百科

当需要编码需要通过设计用于处理文本数据的媒体存储和传输的二进制数据时,通常使用Base64编码方案.这是为了确保数据在运输过程中保持完好无需修改.

但是,数据是否总是以二进制形式存储/传输,因为我们的机器存储二进制文件的内存只取决于你如何解释它?因此,无论您编码位模式010011010110000101101110ManASCII或如TWFu为Base64,你最终将存储相同的位模式.

如果最终编码是零和1,并且每台机器和媒体都可以处理它们,那么如果数据表示为ASCII或Base64,这又如何重要?

什么是"旨在处理文本数据的媒体"?他们可以处理二元=>他们可以处理任何事情.


谢谢大家,我想我现在明白了.

当我们发送数据时,我们无法确定数据的解释格式是否与我们预期的相同.因此,我们发送以双方都理解的某种格式(如Base64)编码的数据.这样,即使发送方和接收方以不同方式解释相同的内容,但由于它们对编码格式达成一致,因此数据不会被错误地解释.

来自Mark Byers的例子

如果我想发送

Hello
world!
Run Code Online (Sandbox Code Playgroud)

一种方法是用ASCII发送它

72 101 108 108 111 10 119 111 114 108 100 33
Run Code Online (Sandbox Code Playgroud)

但是字节10可能无法正确解释为另一端的换行符.因此,我们使用ASCII的子集对此进行编码

83 71 86 115 98 71 56 115 67 110 100 118 99 109 120 107 73 61 61
Run Code Online (Sandbox Code Playgroud)

以相同数量的信息传输的更多数据为代价,确保接收器能够以预期的方式解码数据,即使接收器恰好对字符集的其余部分有不同的解释.

algorithm binary base64 ascii character-encoding

246
推荐指数
12
解决办法
8万
查看次数

如何在Python3中将"二进制字符串"转换为普通字符串?

例如,我有一个像这样的字符串(返回值subprocess.check_output):

>>> b'a string'
b'a string'
Run Code Online (Sandbox Code Playgroud)

无论我做了什么,它总是印b'在字符串之前的烦人:

>>> print(b'a string')
b'a string'
>>> print(str(b'a string'))
b'a string'
Run Code Online (Sandbox Code Playgroud)

有没有人有任何关于如何将其用作普通字符串或将其转换为普通字符串的想法?

python string binary python-3.x

208
推荐指数
3
解决办法
25万
查看次数

为什么对签名数字更喜欢两个补码而不是符号和数量?

我只是好奇是否有一个理由为了在二进制中表示-1,使用二进制补码:翻转位并加1?

-1表示为11111111(二进制补码)而不是(对我来说更直观)10000001,它是二进制1,第一位作为负标志.

免责声明:我不依赖二进制算术来完成我的工作!

math binary negative-number internal-representation twos-complement

196
推荐指数
8
解决办法
8万
查看次数