负数二进制在32位int表示

在计算机中,负数以其正值的补码形式表达
什么叫补码呢?这得从原码,反码说起。
原码:一个整数,按照绝对值大小转换成的二进制数,称为原码。
比如 00000000 00000000 00000000 00000101 是 5的 原码。
反码:将二进制数按位取反,所得的新二进制数称为原二进制数的反码。
取反操作指:原为1,得0;原为0,得1。(1变0; 0变1)
比如:将00000000 00000000 00000000 00000101每一位取反,得11111111 11111111 11111111 11111010
称:11111111 11111111 11111111 1111101000000000 00000000 00000000 00000101 的反码。
反码是相互的,所以也可称:
11111111 11111111 11111111 1111101000000000 00000000 00000000 00000101 互为反码。
补码:反码加1称为补码。
也就是说,要得到一个数的补码,先得到反码,然后将反码加上1,所得数称为补码。
比如:00000000 00000000 00000000 00000101的反码是:11111111 11111111 11111111 11111010
那么,补码为:
11111111 11111111 11111111 11111010 + 1 = 11111111 11111111 11111111 11111011
整数-1在计算机中如何表示。
假设这也是一个int类型,那么:
1、先取1的原码:00000000 00000000 00000000 00000001
2、得反码:     11111111 11111111 11111111 11111110
3、得补码:     11111111 11111111 11111111 11111111
-1在计算机里用二进制表达就是全1。

原文地址:https://www.cnblogs.com/zyl686/p/11408356.html

时间: 2024-08-09 07:42:23

负数二进制在32位int表示的相关文章

[c++]关于倒转32位int整数的范围控制问题

题目来源:leetcode Reverse Integer Given a 32-bit signed integer, reverse digits of an integer. Example 1:            Example 2:          Example 3: Input: 123             Input: -123         Input: 120 Output: 321          Output: -321       Output: 21 N

<转>32位移植到64位 注意事项

32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么样的程序需要升级到64位? 理论上说,64位的操作系统,对32位的程序具有良好的兼容性,即使全部换成64位平台,依然可以良好的运行32位的程序.因此,许多目前在32位平台上运行良好的程序也许不必移植,有选择,有甄别的进行模块的升级,对我们工作的展开,是有帮助的. 什么样的程序需要升级到64位呢? 除

【转】32位移植到64位 注意事项 ----不错

原文网址:http://blog.csdn.net/w174504744/article/details/8678045 32bit-64bit porting work注意事项 64位服务器逐步普及,各条产品线对64位升级的需求也不断加大.在本文中,主要讨论向64位平台移植现有32位代码时,应注意的一些细小问题. 什么样的程序需要升级到64位? 理论上说,64位的操作系统,对32位的程序具有良好的兼容性,即使全部换成64位平台,依然可以良好的运行32位的程序.因此,许多目前在32位平台上运行良

查看两个int数的二进制有几位不同

题目:查看两个int(32位)数的二进制有几位不同. 分析:要理解该题目的意思,就要明白C语言中关于位的一些操作符. 1)"&",按位与操作符,从低位到高位对两个数的每位进行与操作,如1001&1101=1001,都为1则取1: 2)"|",按位或操作符,有一个是1就取1: 3)"^",异或,不同则取1: 4)"~",非操作符,用来对一个二进制数按位取反: 5)"<<",左移操作

32位和64位系统区别及int字节数

一)64位系统和32位有什么区别? 1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍.但这是建立在64bit操作系统,64bit软件的基础上的. 什么是64位处理器? 之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能力也是2的倍数.8位处理器.16位处理器.32位处理器和64位处理器,其计数都是2的倍数.一次处理的数据越大,该电

在32位系统中,int类型的最大值是多少?

首先分析一个问题:int类型一般情况下是否等于signed int类型,目前所知道的编译器一般是这样子的.那再问:为甚答案是2的31次方,减去1,原来符号整型的最大值是31个1,意味着是2^0+2^1+2^1+........+2^30,所以答案就是这个. 延伸出一个问题:如何得知windows的操作系统类型,打开控制面板,就可以看到操作系统类型,显示的是32位操作系统,在这里可以知道一个指针,是4个字节长度.曾经遇到float和double之间的区别,在实际的项目中,从来没有使用到float或

【转】32位和64位系统区别及int字节数

http://blog.csdn.net/zhongzhiwei/article/details/8678885 一)64位系统和32位有什么区别? 1.64bit CPU拥有更大的寻址能力,最大支持到16GB内存,而32bit只支持4G内存 2.64位CPU一次可提取64位数据,比32位提高了一倍,理论上性能会提升1倍.但这是建立在64bit操作系统,64bit软件的基础上的. 什么是64位处理器? 之所以叫做“64位处理器”,是因为电脑内部都是实行2进制运算,处理器(CPU)一次处理数据的能

64位系统和32位系统下的short、int、long数据的宽度

不同的编译器根据不同的 64 位模型有所不同. 比如 Visual C++,从第一个支持 64 位的版本起,一直就是使用 LLP64 内存模型,也就是说,编译出的代码除了 long 和指针是 64 位,int 保持 32 位不变. 可以运行下代码得到结果.#include <stdio.h>int main(){ printf("char: %d\n",sizeof(char)); printf("char *: %d\n",sizeof(char *)

32位二进制IP地址与十进制IP地址互相转换

代码: 1 import java.util.List; 2 import java.util.ArrayList; 3 import java.util.Scanner; 4 public class Transformation { 5 public static void main(String[] args)throws Exception { 6 String a; 7 boolean b; 8 Scanner in=new Scanner(System.in); 9 10 Syste