C++学习笔记6 - 整数的存储

#include <iostream>

//带符号整数在内存中的存储

void main()
{
	//所有整数类型 分两种
	//无符号整数  也就是 只有 正整数(+) 和 零(0)
	//有符号整数  也就是 有 负数(-) 正整数(+) 和 零(0)

	//正整数 在内存中的存储 就是其 二进制形式
	//负数 在内存中的存储 就是 其绝对值的二进制形式 取反 再加1

	//比如
	int a = 10;
	/*
		10 的二进制 就是 1010  单字节补全 0000 1010
		int类型 4字节  补全  00000000 00000000 00000000 00001010
		按照低字节优先规则存储 00001010 00000000 00000000 00000000
	*/

	int b = -10;
	/*
		由于 10 是负数 所以 会取其绝对值
		按照int类型 4字节补全 其绝对值为:

		00000000 00000000 00000000 00001010

		按位 取反 (每一位 0变1  1变0)

		11111111 11111111 11111111 11110101

		加 1
		
		11111111 11111111 11111111 11110110
		FF	FF	FF	F6

		按照低字节位优先 存入内存中
		
		F6 FF FF FF
	*/

	/*
		假设 内存中有数据  55 66 77 88
		该数据是否是负数 就先取出数据(先取得的是低字节 注意顺序)

		88 77 66 55
		10001000 01110111 01100110 01010101
		最高位是 1  为负数
		
		先减 1
		10001000 01110111 01100110 01010100

		按位取反
		01110111 10001000 10011001 10101011

		转十进制 并添加负号
		-2005440939
	*/

	int c = -2005440939;


	system("pause");
}

  

posted @ 2018-07-16 19:28  西门大神  阅读(517)  评论(0编辑  收藏  举报