问题标签 [bit-representation]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python 中的按位编程
我正在尝试编写一个程序来解决 ACM 问题,它必须非常快。解决该问题的一种数学上快速的方法是使用按位计算。但是,我正在使用 python,并且无法在位级别执行这些计算。问题是:
- 计算位中 1 和 0 的数量。例如,我们如何计算二进制数字 100010 有两个 1 和四个 0。我能想象的唯一方法是将其转换为字符串并计算它们。但是这种转换首先抵消了在位级别工作所获得的所有速度。
- 如何将描述二进制数字(例如“100101”)的字符串输入表示为Python中的实际二进制数字?目前我有一个将位转换为整数的函数,并对整数执行按位运算。
- 有位数据类型吗?那就是我可以将输入作为位而不是字符串或整数接收吗?
我确实考虑过在 C++ 中编写诸如 bitSet 之类的类,但我感觉这也不会很快。PS 我正在使用的二进制数字可能高达 1000 位,我可能必须使用 1000 个这样的二进制数字,因此效率至关重要。
python - 将带有表示错误的浮点数舍入到最接近且正确的结果
当 Python 中的经典表示错误开始成为问题时,我遇到了一种情况:我需要将它们用于 Numpy 中的矩阵运算,并且尚不支持小数类型。
你们都知道,如果我这样做,111.85 * 111.85
我会得到12510.422499999999
,但如果我round(12510.422499999999, 4)
能得到正确的结果,那当然是12510.4225
。
但实际的问题是:
- 这个圆形的东西是一个好主意和一个好习惯吗?
- 这适用于所有情况吗?有时小数位置 ..999 可能更多
- 最后,如何为所有可能的值获得适当的小数位数以用于该轮次?
floating-point - 浮点二进制表示
我在理解浮点表示(Two's Placement-sign mantissa exponent)时遇到问题,你能检查一下,我做得对吗?
-1/7
-1*1/7*2^0=-1*4/7*2^1=-1*4/7*2^2=-1*8/7*2^3
所以在二进制它会像:
1 00000011 1.001 001 001 001 001 001 001
我的主要问题是什么时候知道指数是负数,你能给我一些提示吗?
c++ - 将符号应用于 16 位的 dicom 图像
我正在尝试开发一个dicom图像查看器。我已成功解码图像缓冲区。我将所有图像像素值unsigned char
存储在 C++ 的缓冲区中。
现在,当我显示图像时,它适用于像素表示 (0028,0103) = 0 的图像。有人可以告诉我如何将此签名转换应用到这些解码缓冲区中。我不知道如何将此有符号位转换为无符号位(我认为通常使用类型转换的转换效果不佳)。请发布 16 位图像的回放,这是我现在真正需要的。
我正在尝试从头开始创建一个查看器,它只是将图像放在屏幕上。我已经成功完成了dicom图像的解码和显示。但是,当我尝试打开像素表示(标记 0028,0103)=1 的图像时,图像显示不正确。从 16 位到 8 位的转换是与应用窗口级别和宽度(在 dicom 图像中找到的值)一起完成的,转换只是线性的。
assembly - 如何将 I 型指令转换为其 32 位表示?
给出以下指令:
添加 $s0, $0, -10
我需要计算它的 32 位表示。由于 addi 是 I 型指令
addi 的操作码是 001000。
卢比是 0 美元,即 00000
Rt os $s0,即 10000
我如何计算-10 的剩余 16 位?我将 10 转换为二进制并找到它的 1 和 2 的补码,并在最左侧添加 1(负位)。
我得到 001000 00000 10000 1000000011110110 转换为 0x201080F6,但它不正确。
我究竟做错了什么?
binary - 这个和如何在无符号二进制和二进制补码二进制中相等?
我正在阅读一本计算机体系结构的书,发现了以下内容:
假设您有一个 8 位单元。所以有 256 个可能的整数值。非负数从 0 到 127。假设二进制补码表示,97 + 45 的总和是多少?
无符号显然是 142,你可以用十进制的 97 + 45 来表示,或者:
但是当你执行二进制补码时,你会得到这个结果 ( 1000 1110
) 并确定它是负数,因为符号位是 1。然后取它的一个补码:
然后确定它的补码:
这个数字是114
但是因为我们的原始数字1
在符号位中有一个,所以它是-114
。
问题):
为什么要费尽心思寻找二进制补码-114
?由于 97 和 45,为什么不将两个正整数之和作为一个无符号值,该值适合 8 位单元格 ( 1111 1111
being 255
) 的范围。仅仅是因为问题要求二进制补码吗?
-114
相当于142
?_ 我相信,如果你采用二进制补码数线,你会142-256
得到-114
。由此,我不明白如果您将两个正值相加,为什么还要使用二进制补码!
binary - ASCII 表和字符表示
我们在课堂上学习 ASCII 表,128 个字符中的每个字符都有一个从 0 到 128 的唯一数字来表示它。例如“a”是 97(二进制 97 是 1100001)。“%”是 37(二进制 37 是 0100101)。(我知道对于 7 的固定长度,我们应该允许二进制数以 0 开头)
如果 97 代表“a”,那么什么代表字符串“97”?整数 97 代表什么?
floating-point - [0,1] 上的定点表示与浮点表示
[0,1] 中的值的定点(位级)表示与其浮点(位级)值相比有什么区别/相似之处?