标签: ones-complement

如何检测C中有符号整数的编码?

ISO C标准允许三种编码方法用于有符号整数:二进制补码,一个补码和符号/幅度.

在运行时检测编码的有效或好方法是什么(或者如果有更好的解决方案,还有其他时间)?我想知道这一点,所以我可以针对不同的可能性优化bignum库.

我计划计算这个,并在每次程序运行时将其存储在一个变量中,所以它不必非常快 - 我假设在程序运行期间编码不会改变:-)

c signed twos-complement ones-complement

15
推荐指数
2
解决办法
569
查看次数

按位运算符可以有未定义的行为吗?

位运算符(~,&,|^)在他们的推动数的按位表示操作.这样的操作会导致不确定的行为吗?

例如,~运算符在C标准中以这种方式定义:

6.5.3.3一元算术运算符

~运算符的结果是其(提升的)操作数的按位补码(也就是说,当且仅当未设置转换的操作数中的相应位时,才会设置结果中的每个位).整数提升在操作数上执行,结果具有提升类型.如果提升的类型是无符号类型,则表达式~E等效于该类型中可表示的最大值减去E.

在所有体系结构上,~0生成一个位模式,其符号位设置为1,所有值位设置为1.在一个补码架构上,该表示对应于负零.这个位模式可以成为陷阱表示吗?

是否存在涉及更常见架构的简单位运算符的未定义行为的其他示例?

c c++ bitwise-operators language-lawyer ones-complement

14
推荐指数
1
解决办法
851
查看次数

从Python的十六进制到一个补码

有没有一种简单的方法可以在python中生成一个补码?

例如,如果你取十六进制值0x9E,我需要将其转换为0x61.

我需要将二进制1换成0,将0换成1.感觉这应该很简单.

python bit-manipulation ones-complement

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

在C++中检测一个或两个补码架构?

检测架构是否在C++中使用一个或两个补码表示的最可靠方法是什么?

c++ architecture twos-complement ones-complement c++11

9
推荐指数
1
解决办法
1525
查看次数

一个补码架构上的负零行为?

在一个补码架构上考虑以下代码:

int zero = 0;
int negzero = -0;
std::cout<<(negzero < zero)<<std::endl;
std::cout<<(negzero <= zero)<<std::endl;
std::cout<<(negzero == zero)<<std::endl;
std::cout<<(~negzero)<<(~zero)<<std::endl;
std::cout<<(1 << negzero)<<std::endl;
std::cout<<(1 >> negzero)<<std::endl;
Run Code Online (Sandbox Code Playgroud)
  • 代码会产生什么输出?
  • 标准定义了哪些行,哪些行依赖于实现,哪些行是未定义的行为?

c++ standards integer ones-complement c++11

9
推荐指数
1
解决办法
389
查看次数

在C/C++中使用〜的1的补码

我正在使用Visual Studio 2013.
最近我尝试了~运算符1的补码:

int a = 10;
cout << ~a << endl;
Run Code Online (Sandbox Code Playgroud)

输出是 -11

但对于

unsigned int a = 10;
cout << ~a << endl;
Run Code Online (Sandbox Code Playgroud)

输出是 4294967296

我不明白为什么输出是-11签名的情况int.请帮我解决这个困惑.

c c++ unsigned signed ones-complement

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

为什么Integer.MIN_VALUE的负数给出相同的值?

考虑下面的java代码.

Integer value = Integer.MIN_VALUE;
System.out.println(value);

value = -value;
System.out.println(value);
Run Code Online (Sandbox Code Playgroud)

产量

-2147483648
-2147483648
Run Code Online (Sandbox Code Playgroud)

价值的负值如何产生Integer.MIN_VALUE相同的价值?

但结果不能是2147483648因为java中Integer的最大值是2147483647.

但想知道为什么-2147483648?内部发生了什么样的按位操作?

java operators bitwise-operators ones-complement

8
推荐指数
2
解决办法
1147
查看次数

(size_t)-1和〜0有什么区别?

我已经看过这两者,(size_t)-1~0曾经代表大数字,或者数字都被翻转过。

两者之间有什么区别吗?如果是这样,那是什么?

我发现了一个问题:-1和〜0之间有什么区别,但是它没有回答我的问题,因为我正在处理无符号整数(例如size_t),而不是有符号整数(例如int)。

c unsigned ones-complement

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

Unisys 最新的大型机系统是否仍然使用补码表示?

从维基百科的文章似乎的补代表性符号整数基本上是过时的,但他们提一些优利系统,即UNIVAC2200分之1100系列作为仍然支持这种表示。

Unisys Clearpath 系列中的最新系统是否仍然支持和使用其补充?

既然他们使用intel芯片,他们需要模拟器吗?这性能如何?

是否有针对这种架构的 C 编译器?

c legacy language-lawyer ones-complement unisys

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

找到1的补码

我想在输入二进制数后制作一个程序来计算1的补码.这就是我所要做的:

import java.util.Scanner;
public class BitWiseComplement {
    public static void main(String[] args) {
        Scanner keysIn = new Scanner(System.in);
        System.out.println("Please enter your number: ");
        long originalNum = keysIn.nextLong();
        System.out.println(~originalNum);
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我输入0111011时,我得到-111012.我认为〜运算符应该反转数字,以便所有0都是1,所有1都是0.

有帮助吗?

java ones-complement

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