标签: binary

签名与无符号数字0xFFFFFFFF歧义?

正如你在这里看到的,我有一个无符号变量和一个带有相同二进制值但不同小数结果的带符号变量.

 uint unsigned = 0xFFFFFFFF; // 4,294,967,295
 int signed = 0xFFFFFFFF;    // -1
Run Code Online (Sandbox Code Playgroud)

我真的很困惑!在所有32/64位全部打开之后,机器如何区分有符号和无符号.是否有一个完全用于此的CPU 标志?CPU如何知道无符号和有符号数之间的区别?试着理解这几个小时的概念!

或者......另一个例子......让我们拿4位:

// 1 1 0 1  <--- -3
// 0 0 1 0  <---  2
Run Code Online (Sandbox Code Playgroud)

如果我们从-3减去2,结果将是:

// 1 0 0 1  <--- -1 or 9???
Run Code Online (Sandbox Code Playgroud)

cpu将产生该结果,但我的应用程序如何知道它是-1还是9?在编译时已知预期的结果类型?

另一个例子...

    int negative = -1;
    Console.WriteLine(negative.ToString("X")); //output FFFFFFFF
    uint positive = 0xFFFFFFFF;
    Console.WriteLine(positive.ToString("X")); //output FFFFFFFF
Run Code Online (Sandbox Code Playgroud)

稍后编辑:

我用这些东西搞砸了一点,我觉得我得到了它,请纠正我,如果我错了:我们有以下例子:

    sbyte positive = 15;                          //0xF   ( 0000 1111)
    sbyte negative = unchecked((sbyte)-positive); //0xF01;( 1111 0001)

    sbyte …
Run Code Online (Sandbox Code Playgroud)

c# c++ binary

-4
推荐指数
1
解决办法
407
查看次数

c语言中使用strcmp()比较两个二进制文件

首先抱歉我的英语不好。

我有两个二进制文件。

我将二进制文件分别存储到缓冲区中。

然后我使用 strcmp() 比较了两个缓冲区。

strcmp() 的结果为零。

所以我认为两个二进制是相同的。

打开两个二进制文件,然后检查是否有差异。

但我发现差别不大。

问题是什么?

strcmp() 函数不是将二进制与二进制进行比较的正确方法?

c binary file strcmp

-4
推荐指数
1
解决办法
224
查看次数

为什么 10000101 既是 -5 又是 133

维多埃

00000101 是 5

10000101 是 -5

但 10000101 也是 133

我不明白为什么1个二进制能够代表2个数字。如有任何帮助,我们将不胜感激,谢谢。

c binary

-4
推荐指数
1
解决办法
139
查看次数

为什么2加4等于10?

我正在研究 Rust 中的按位运算符,我发现

println!("{:X}", 1 << 4);
Run Code Online (Sandbox Code Playgroud)

打印出 10,但 2^4 应等于 16。

进一步实验,使用权力:

let base: i32 = 2;
for i in 1..=5 {
    print!("{:X} ", base.pow(i));
}
Run Code Online (Sandbox Code Playgroud)

2 4 8 10 20会在应该打印的时候打印出来 2 4 8 16 32

只是想知道你是否可以向我指出 Rust 文档中强调为什么 Rust 中的二进制文件会这样工作的任何内容?我可以用什么来实现 2^4 = 16 呢?

binary bitwise-operators exponentiation rust

-4
推荐指数
1
解决办法
85
查看次数

二进制有多少种可能性?

在8位的整数编码中,10101010您有0-255种可能性.

共有256种不同的可能性,因为有8个1和0.如果我有10位而不是8位,我将获得多少种不同的可能性?

我如何在PHP中计算?

php binary

-5
推荐指数
1
解决办法
170
查看次数

.net中的快速十六进制到二进制转换方法

我正在用C#.net开发一个应用程序.我必须做一个快速的十六进制到二进制转换.我所做的是......

rtpPTypeNum = string.Join(string.Empty, udp.Payload.ToHexadecimalString().Substring(2, 2).Select(C => Convert.ToString(Convert.ToInt32(C.ToString(), 16), 2).PadLeft(4, '0'))).Substring(1, 7);
Run Code Online (Sandbox Code Playgroud)

我已经检查了它的性能,但这对我来说还不够好.

udp.Payload.ToHexadecimalString() 返回一个十六进制数字字符串.

在这个转换中,我必须做大约9000次迭代.

你能给我一个更好的方法吗?

c# binary hex

-5
推荐指数
1
解决办法
1万
查看次数

C++ 将字符转换为二进制

我写了这个,当我启动它时,它给了我所有的可能性。我希望它只给我一个与我输入的字符相对应的字符。你能告诉我这里有什么问题吗?提前致谢。

#include <iostream>
#include <conio.h>
using namespace std;

int main()
{
char letter='b';
while(letter!='end')
{
    cout<<"What is the letter you wanna convert?"<<endl;
    cin >> letter;
    if(letter='A') {cout<<"01000001"<<endl;}
    if(letter='B') {cout<<"01000010"<<endl;}
    if(letter='C') {cout<<"01000011"<<endl;}
    if(letter='D') {cout<<"01000100"<<endl;}
    if(letter='E') {cout<<"01000101"<<endl;}
    if(letter='F') {cout<<"01000110"<<endl;}
    if(letter='G') {cout<<"01000111"<<endl;}
    if(letter='H') {cout<<"01001000"<<endl;}
    if(letter='I') {cout<<"01001001"<<endl;}
    if(letter='J') {cout<<"01001010"<<endl;}
    if(letter='K') {cout<<"01001011"<<endl;}
    if(letter='L') {cout<<"01001100"<<endl;}
    if(letter='M') {cout<<"01001101"<<endl;}
    if(letter='N') {cout<<"01001110"<<endl;}
    if(letter='O') {cout<<"01001111"<<endl;}
    if(letter='P') {cout<<"01010000"<<endl;}
    if(letter='Q') {cout<<"01010001"<<endl;}
    if(letter='R') {cout<<"01010010"<<endl;}
    if(letter='S') {cout<<"01010011"<<endl;}
    if(letter='T') {cout<<"01010100"<<endl;}
    if(letter='U') {cout<<"01010101"<<endl;}
    if(letter='V') {cout<<"01010110"<<endl;}
    if(letter='W') {cout<<"01010111"<<endl;}
    if(letter='X') {cout<<"01011000"<<endl;}
    if(letter='Y') {cout<<"01011001"<<endl;}
    if(letter='Z') {cout<<"01011010"<<endl;}

    if(letter='a') {cout<<"01100001"<<endl;}
    if(letter='b') …
Run Code Online (Sandbox Code Playgroud)

c++ binary loops chars

-5
推荐指数
1
解决办法
7304
查看次数

C中的这个操作是什么?

我开始使用termcaps,我看到了这种操作.

term.c_lflag &= ~(ICANON);

我知道&=是一个binary AND,我不是很舒服.

为什么不简单地使用=或制作一个#define,又&= ~做什么?

c binary termcap

-6
推荐指数
1
解决办法
91
查看次数

如何将“单”转换为二进制?

我整理了一些扩展方法,用于将数字值转换为它们的二进制等效项。

但是我遇到了一个问题。

我们可以使用Convert.ToString()重载将这些类型转换为二进制:

Byte
Short
Integer
Long
Run Code Online (Sandbox Code Playgroud)

例如:

Dim iInteger As Integer
Dim sBinary As String

iInteger = Integer.MaxValue
sBinary = Convert.ToString(iInteger, 2)
Run Code Online (Sandbox Code Playgroud)

但是Single接受基值并没有过载。单参数重载返回科学计数法,而不是二进制值。

我试过了这段代码,改编自以下答案

Public Function ToBinary(Value As Single) As String
  Dim aBits As Integer()

  Dim _
    iLength,
    iIndex As Integer

  Select Case Value
    Case < BitLengths.BYTE : iLength = 7
    Case < BitLengths.WORD : iLength = 15
    Case < BitLengths.DWORD : iLength = 31
    Case < BitLengths.QWORD : iLength = 63
  End …
Run Code Online (Sandbox Code Playgroud)

c# vb.net binary type-conversion

-6
推荐指数
1
解决办法
229
查看次数

我如何使用biginteger来操作二进制值

我正在使用java,我正在尝试使用不同基数(2,8和10)的数字.

所以,我问这个问题是将字符串格式的二进制数改成基数为10的数字

例如110000001010100000000000000000111111/base 2

我尝试了Integer.parseInt(str,radix),但是我遇到了错误.exepetion""线程中的异常"main"java.lang.NumberFormatException:对于java.lang上的java.lang.NumberFormatException.forInputString(Unknown Source)java.lang.Integer.parseInt(Unknown Source)中的输入字符串:"110000001010100000000000000111111" .Integer.parseInt(未知来源)

java binary biginteger

-7
推荐指数
1
解决办法
63
查看次数