long double出于某些原因,我必须打印数字的二进制表示.我想看到它保留在计算机内存中的确切格式.
我经历了以下问题,其中一个union是解决方案.因为float,备用数据类型unsigned int都是32位.因为double,unsigned long int两者都是64位.但是long double,它是96位/ 128位(取决于平台),它没有类似的等效内存消费者.那么,解决方案是什么?
它被标记为问题的副本如何打印(使用cout)数字存储在内存中的方式?!
真的是吗?提到的问题是关于整数的问题和接受的解决方案,它bitset只是截断了浮点部分.我的主要观点是浮点表示,它与该问题的内容无关.
昨天我只想比较简单的golang HelloWorld应用程序和c,go二进制文件就像2-3 MB(只是fmt.Println)等效的c代码,然而,只有大约20 kb(printf).然后我检查了二进制文件正在进行的系统调用,使用strace; 两者之间没有太大的区别所以你是否知道为什么golang二进制文件与c等价物相比如此庞大?
请注意,将十六进制字符串转换为二进制字符串的旧方法已从 swift 中删除,即: String(hex, radix: 2) -> 二进制字符串
swift 4 中的替代方案是什么?
我正在编写一个嵌入式系统程序,它通过SPI从外部ADC接收24位数据,并将数据存储在整数数组中.那部分是有效的.为了使数据有用,我需要以二进制或十六进制形式连接每个字节并除以0x7FFFFFF.这是我遇到麻烦的地方.例如,我可能会通过SPI接收一个如下所示的数据数组:
data_buffer = { 24 , 17 , 140 };
Run Code Online (Sandbox Code Playgroud)
又名
data_buffer = { 0b00011000 , 0b00010001 , 0b10001100 };
Run Code Online (Sandbox Code Playgroud)
又名
data_buffer = { 0x18 , 0x11 , 0x8C };
Run Code Online (Sandbox Code Playgroud)
我需要用这个值来连接每个元素来得到这样的东西:
data_value = 0x18118C
Run Code Online (Sandbox Code Playgroud)
然后将该值除以0x7FFFFF,以使其在我的程序中有用.在这个例子中,我最终想要的值是0x18118C/0x7FFFFF = 0.188
我该怎么做呢?
对不起,我没有提供更多代码,老实说我不知道从哪里开始.
如上所述,我想找到-1x10 ^ 200的IEEE 754表示.
我知道我们可以得到标志为1,因为我们有一个负数.但是我不确定如何找到尾数/指数.我最初的想法是将10 ^ 200转换为2 ^ x.但是x不是整数.所以我认为我们需要以某种方式通过以某种方式分离10 ^ 200得到一个分数.从理论上讲,人们可以使用非常长的分离,但我正在寻找一个更优雅的答案,可以在没有高精度计算器的情况下完成.
为什么 -2&-1 会导致 -2?我假设 0010 和 0001 会导致 0000。当数字为正时确实如此。
fmt.Printf("%b, %b, %v\n", -2, -1, -2&-1)
// shows: -10, -1, -2
Run Code Online (Sandbox Code Playgroud)
#include <stdio.h>
int main() {
int n = 10;
int ans = n ^ (1 << 2);
printf("%d", ans);
}
Run Code Online (Sandbox Code Playgroud)
此代码切换特定数字,但我需要整个位来切换示例:10-> 0b1010-> 0b0101->5
我有一个包含二进制值的字符串(101101).现在我想检查最后一个字母是否为1,如果是,则将其更改为0.我怎样才能做到这一点 ?
我在java中创建一些电影文件.该文件采用.mp4格式.由于视频是从安全监控摄像头拍摄的,我想让任何媒体播放器中的任何人打开该文件时都会损坏.唯一的方法是通过与加密时完成相反的操作来解密文件.
x = // byte read from file.
x = x >> 2;
// write x to new file
Run Code Online (Sandbox Code Playgroud)
所以基本上我正在寻找一些方法来加密文件(可能会移动文件的每个字节).我不想使用复杂的算法,如AES,DES或密码加密.
通过移动字节来解密/加密文件的最佳方法是什么?这会使文件看起来已损坏吗?
你能否告诉我为什么下面的代码给出了一个否定的结果,因为无符号数的左移a有一个负值?
int main(void)
{
unsigned int a=1;
printf("%d",a<<-1);
}
Run Code Online (Sandbox Code Playgroud)
输出 -2147483648.
binary ×10
c ×4
c++ ×2
go ×2
hex ×2
java ×2
bit-shift ×1
compilation ×1
double ×1
embedded ×1
encryption ×1
file ×1
ieee-754 ×1
long-double ×1
swift ×1